জাভাস্ক্রিপ্ট নীতি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

কি

এই নীতি আপনাকে কাস্টম জাভাস্ক্রিপ্ট কোড যোগ করতে দেয় যা একটি API প্রক্সি প্রবাহের প্রেক্ষাপটে কার্যকর হয়। আপনার কাস্টম জাভাস্ক্রিপ্ট কোডে, আপনি Apigee Edge JavaScript অবজেক্ট মডেলের বস্তু, পদ্ধতি এবং বৈশিষ্ট্য ব্যবহার করতে পারেন। অবজেক্ট মডেল আপনাকে প্রক্সি ফ্লো প্রসঙ্গে ভেরিয়েবল পেতে, সেট করতে এবং অপসারণ করতে দেয়। আপনি অবজেক্ট মডেলের সাথে দেওয়া মৌলিক ক্রিপ্টোগ্রাফিক ফাংশনগুলিও ব্যবহার করতে পারেন।

সম্পর্কে

জাভাস্ক্রিপ্ট নীতির জন্য অনেক ব্যবহারের ক্ষেত্রে রয়েছে। উদাহরণস্বরূপ, আপনি ফ্লো ভেরিয়েবল পেতে এবং সেট করতে পারেন, কাস্টম লজিক চালাতে পারেন এবং ফল্ট হ্যান্ডলিং সঞ্চালন করতে পারেন, অনুরোধ বা প্রতিক্রিয়াগুলি থেকে ডেটা বের করতে পারেন, ব্যাকএন্ড টার্গেট URL ডায়নামিকভাবে সম্পাদনা করতে পারেন এবং আরও অনেক কিছু। এই নীতি আপনাকে কাস্টম আচরণ বাস্তবায়নের অনুমতি দেয় যা অন্য কোনো মানক এজ নীতি দ্বারা আচ্ছাদিত নয়। প্রকৃতপক্ষে, AssignMessage এবং ExtractVariable-এর মতো অন্যান্য নীতি দ্বারা বাস্তবায়িত অনেকগুলি একই আচরণ অর্জন করতে আপনি একটি JavaScript নীতি ব্যবহার করতে পারেন।

একটি ব্যবহারের ক্ষেত্রে যা আমরা জাভাস্ক্রিপ্ট নীতির জন্য সুপারিশ করি না তা হল লগিং৷ মেসেজ লগিং নীতিটি স্প্লঙ্ক, সুমো এবং লগলি-এর মতো তৃতীয় পক্ষের লগিং প্ল্যাটফর্মগুলিতে লগ করার জন্য অনেক বেশি উপযুক্ত এবং আপনি পোস্টক্লায়েন্টফ্লোতে মেসেজ লগিং নীতি কার্যকর করার মাধ্যমে API প্রক্সি কর্মক্ষমতা উন্নত করেন, যা প্রতিক্রিয়া ফেরত পাঠানোর পরে কার্যকর হয় ক্লায়েন্টের কাছে।

জাভাস্ক্রিপ্ট নীতি আপনাকে কার্যকর করার জন্য একটি জাভাস্ক্রিপ্ট সোর্স ফাইল নির্দিষ্ট করতে দেয় অথবা আপনি <Source> উপাদানের সাথে নীতির কনফিগারেশনে সরাসরি জাভাস্ক্রিপ্ট কোড অন্তর্ভুক্ত করতে পারেন। যেভাবেই হোক, জাভাস্ক্রিপ্ট কোডটি কার্যকর হয় যখন নীতিটি সংযুক্ত করা ধাপটি কার্যকর হয়। সোর্স ফাইল অপশনের জন্য, সোর্স কোড সর্বদা প্রক্সি বান্ডেলের মধ্যে একটি স্ট্যান্ডার্ড অবস্থানে সংরক্ষণ করা হয়: apiproxy/resources/jsc । অথবা, আপনি পরিবেশ বা সংস্থার স্তরে একটি সংস্থান ফাইলে সোর্স কোড সংরক্ষণ করতে পারেন। নির্দেশাবলীর জন্য, সম্পদ ফাইল দেখুন। এছাড়াও আপনি Apigee UI প্রক্সি এডিটরের মাধ্যমে আপনার জাভাস্ক্রিপ্ট আপলোড করতে পারেন।

JavaScript সোর্স ফাইলে সবসময় একটি .js এক্সটেনশন থাকতে হবে।

জাভাস্ক্রিপ্টের বর্তমানে সমর্থিত সংস্করণের জন্য সমর্থিত সফ্টওয়্যার এবং সমর্থিত সংস্করণ দেখুন।

ভিডিও

কিভাবে জাভাস্ক্রিপ্ট নীতি ব্যবহার করে একটি কাস্টম নীতি এক্সটেনশন তৈরি করতে হয় তা শিখতে একটি ছোট ভিডিও দেখুন।

নমুনা

লক্ষ্য URL পুনরায় লিখুন

এখানে একটি সাধারণ ব্যবহারের ক্ষেত্রে রয়েছে: একটি অনুরোধের বডি থেকে ডেটা বের করা, এটি একটি ফ্লো ভেরিয়েবলে সংরক্ষণ করা এবং প্রক্সি ফ্লোতে অন্য কোথাও সেই ফ্লো ভেরিয়েবল ব্যবহার করা। ধরা যাক আপনার কাছে একটি অ্যাপ রয়েছে যেখানে ব্যবহারকারী একটি HTML ফর্মে তাদের নাম প্রবেশ করে এবং জমা দেয়। আপনি API প্রক্সি ফর্ম ডেটা বের করতে চান এবং ব্যাকএন্ড পরিষেবাতে কল করার জন্য ব্যবহৃত URL-এ গতিশীলভাবে যুক্ত করতে চান। আপনি কিভাবে একটি JavasScript নীতিতে এটি করবেন?

দ্রষ্টব্য: আপনি যদি এই উদাহরণটি ব্যবহার করে দেখতে চান তবে আমরা ধরে নিই যে আপনি প্রক্সি সম্পাদকে একটি নতুন প্রক্সি তৈরি করেছেন৷ আপনি এটি তৈরি করার সময়, এটির একটি ব্যাকএন্ড পরিষেবা URL দিন: http://www.example.com৷ এই উদাহরণের জন্য, আমরা ব্যাকএন্ড ইউআরএলটি গতিশীলভাবে পুনরায় লিখতে যাচ্ছি। আপনি যদি একটি নতুন প্রক্সি তৈরি করতে না জানেন তবে শুরু করার টিউটোরিয়ালটি পড়ুন। .

  1. এজ UI এ, প্রক্সি এডিটরে আপনি যে প্রক্সি তৈরি করেছেন সেটি খুলুন।
  2. বিকাশ ট্যাবটি নির্বাচন করুন।
  3. নতুন মেনু থেকে, নতুন স্ক্রিপ্ট নির্বাচন করুন।
  4. ডায়ালগে, JavaScript নির্বাচন করুন এবং স্ক্রিপ্টটিকে একটি নাম দিন, যেমন js-example
  5. কোড এডিটরে নিম্নলিখিত কোডটি পেস্ট করুন এবং প্রক্সিটি সংরক্ষণ করুন। লক্ষ্য করা গুরুত্বপূর্ণ বিষয় হল context বস্তু। এই অবজেক্টটি প্রক্সি ফ্লোতে যেকোনো জায়গায় জাভাস্ক্রিপ্ট কোডে উপলব্ধ। এটি প্রবাহ-নির্দিষ্ট ধ্রুবক প্রাপ্ত করতে, দরকারী পেতে/সেট পদ্ধতি কল করতে এবং আরও ক্রিয়াকলাপের জন্য ব্যবহৃত হয়। এই অবজেক্ট অংশটি এজের জাভাস্ক্রিপ্ট অবজেক্ট মডেলের । এছাড়াও লক্ষ্য করুন যে target.url ফ্লো ভেরিয়েবল হল একটি অন্তর্নির্মিত, রিড/রাইট ভেরিয়েবল যা টার্গেট রিকোয়েস্ট ফ্লোতে অ্যাক্সেসযোগ্য। যখন আমরা সেই ভেরিয়েবলটিকে API URL দিয়ে সেট করি, তখন এজ সেই URL-এ তার ব্যাকএন্ড কল করে। আমরা মূলত মূল টার্গেট ইউআরএলটি পুনঃলিখন করেছি, যা আপনি প্রক্সি তৈরি করার সময় আপনি যা নির্দিষ্ট করেছিলেন (যেমন, http://www.example.com)।

    if (context.flow=="PROXY_REQ_FLOW") {
         var username = context.getVariable("request.formparam.user");
         context.setVariable("info.username", username);
    }
    
    
    if (context.flow=="TARGET_REQ_FLOW") {
         context.setVariable("request.verb", "GET");
         var name = context.getVariable("info.username");
         var url = "http://mocktarget.apigee.net/"
         context.setVariable("target.url", url + "?user=" + name);
    }
  6. নতুন নীতি মেনু থেকে, JavaScript নির্বাচন করুন।
  7. নীতির একটি নাম দিন, যেমন target-rewrite । ডিফল্ট স্বীকার করুন, এবং নীতি সংরক্ষণ করুন.
  8. আপনি যদি নেভিগেটরে প্রক্সি এন্ডপয়েন্ট প্রিফ্লো নির্বাচন করেন, আপনি দেখতে পাবেন যে নীতিটি সেই প্রবাহে যোগ করা হয়েছে।
  9. নেভিগেটরে, টার্গেট এন্ডপয়েন্ট প্রিফ্লো আইকন নির্বাচন করুন।
  10. নেভিগেটর থেকে, ফ্লো এডিটরে টার্গেট এন্ডপয়েন্টের অনুরোধের দিকে জাভাস্ক্রিপ্ট নীতি টেনে আনুন।
  11. সংরক্ষণ করুন।
  12. আপনার সঠিক প্রতিষ্ঠানের নাম এবং প্রক্সি নামকে উপযুক্ত হিসাবে প্রতিস্থাপন করে API-কে এভাবে কল করুন:
curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST -d 'user=Will' http://myorg-test.apigee.net/js-example

একটি চূড়ান্ত জিনিস, আসুন এই উদাহরণে ব্যবহৃত জাভাস্ক্রিপ্ট নীতির জন্য XML সংজ্ঞাটি একবার দেখে নেওয়া যাক। উল্লেখ্য গুরুত্বপূর্ণ বিষয় হল <ResourceURL> উপাদানটি কার্যকর করার জন্য JavaScript সোর্স ফাইল নির্দিষ্ট করতে ব্যবহৃত হয়। যেকোন জাভাস্ক্রিপ্ট সোর্স ফাইলের জন্য এই একই প্যাটার্ন ব্যবহার করা হয়: jsc://filename.js । আপনি যদি জাভাস্ক্রিপ্ট কোড অন্তর্ভুক্ত করতে চান, তাহলে আপনি এটি করতে এক বা একাধিক <IncludeURL> উপাদান ব্যবহার করতে পারেন, যেমনটি এই রেফারেন্সে পরে বর্ণিত হয়েছে।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="target-rewrite">
    <DisplayName>target-rewrite</DisplayName>
    <Properties/>
    <ResourceURL>jsc://js-example.js</ResourceURL>
</Javascript>

জাভাস্ক্রিপ্ট থেকে সম্পত্তি মান পুনরুদ্ধার করুন

আপনি কনফিগারেশনে একটি <Property> উপাদান যোগ করতে পারেন, তারপর রানটাইমে JavaScript দিয়ে উপাদানটির মান পুনরুদ্ধার করতে পারেন।

জাভাস্ক্রিপ্ট কোড থেকে যে নামটি দিয়ে সম্পত্তি অ্যাক্সেস করতে হবে তা নির্দিষ্ট করতে উপাদানটির name বৈশিষ্ট্য ব্যবহার করুন। <Property> উপাদানের মান (প্রাথমিক এবং বন্ধ ট্যাগের মধ্যে মান) হল আক্ষরিক মান যা জাভাস্ক্রিপ্ট দ্বারা প্রাপ্ত হবে।

জাভাস্ক্রিপ্টে, আপনি নীতিগত সম্পত্তির মান পুনরুদ্ধার করে এটিকে Properties অবজেক্টের একটি বৈশিষ্ট্য হিসাবে অ্যাক্সেস করে, নিম্নলিখিত হিসাবে:

  • সম্পত্তি কনফিগার করুন. এখানে, সম্পত্তি মান হল পরিবর্তনশীল নাম response.status.code
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="JavascriptURLRewrite">
        <DisplayName>JavascriptURLRewrite</DisplayName>
        <Properties>
            <Property name="source">response.status.code</Property>
        </Properties>
        <ResourceURL>jsc://JavascriptURLRewrite.js</ResourceURL>
    </Javascript>
  • জাভাস্ক্রিপ্ট দিয়ে সম্পত্তি পুনরুদ্ধার করুন. এখানে, পুনরুদ্ধার করা মান -- একটি পরিবর্তনশীল নাম -- তারপর getVariable ফাংশন দ্বারা ভেরিয়েবলের মান পুনরুদ্ধার করা হয়।
    var responseCode = properties.source; // Returns "response.status.code"
    var value = context.getVariable(responseCode); // Get the value of response.status.code
    context.setVariable("response.header.x-target-response-code", value);

হ্যান্ডলিং ত্রুটি

উদাহরণ এবং ত্রুটি পরিচালনার কৌশলগুলির আলোচনার জন্য যা আপনি একটি জাভাস্ক্রিপ্ট কলআউটে ব্যবহার করতে পারেন, Apigee কমিউনিটিতে এই পোস্টটি দেখুন। Apigee সম্প্রদায়ে দেওয়া পরামর্শগুলি শুধুমাত্র তথ্যের জন্য এবং অগত্যা Apigee দ্বারা সুপারিশকৃত সেরা অনুশীলনগুলিকে প্রতিনিধিত্ব করে না৷


উপাদান রেফারেন্স

উপাদানের রেফারেন্স জাভাস্ক্রিপ্ট নীতির উপাদান এবং বৈশিষ্ট্য বর্ণনা করে।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Javascript async="false" 
        continueOnError="false" enabled="true" timeLimit="200" 
        name="JavaScript-1">
    <DisplayName>JavaScript 1</DisplayName>
    <Properties>
        <Property name="propName">propertyValue</Property>
    </Properties>
    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
    </SSLInfo>
    <IncludeURL>jsc://a-javascript-library-file</IncludeURL>
    <ResourceURL>jsc://my-javascript-source-file</ResourceURL>
    <Source>insert_js_code_here</Source>

</Javascript>

<জাভাস্ক্রিপ্ট> বৈশিষ্ট্য

<Javascript name="Javascript-1" enabled="true" continueOnError="false" async="false" timeLimit="200">

নিম্নলিখিত গুণাবলী এই নীতি নির্দিষ্ট.

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
সময়সীমা

স্ক্রিপ্টটি চালানোর জন্য অনুমোদিত সর্বোচ্চ সময় (মিলিসেকেন্ডে) নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি 200 ms-এর একটি সীমা অতিক্রম করা হয়, তাহলে নীতিটি এই ত্রুটিটি নিক্ষেপ করে: Javascript. policy_name failed with error: Javascript runtime exceeded limit of 200ms

দ্রষ্টব্য: বিনামূল্যে ট্রায়াল অ্যাকাউন্টের জন্য, কার্যকর করার সময় 200 ms পর্যন্ত সীমাবদ্ধ।

N/A প্রয়োজন

The following table describes attributes that are common to all policy parent elements:

Attribute Description Default Presence
name

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

N/A Required
continueOnError

Set to false to return an error when a policy fails. This is expected behavior for most policies.

Set to true to have flow execution continue even after a policy fails.

false Optional
enabled

Set to true to enforce the policy.

Set to false to turn off the policy. The policy will not be enforced even if it remains attached to a flow.

true Optional
async

This attribute is deprecated.

false Deprecated

<DisplayName> element

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, natural-language name.

<DisplayName>Policy Display Name</DisplayName>
Default

N/A

If you omit this element, the value of the policy's name attribute is used.

Presence Optional
Type String

<IncludeURL> উপাদান

একটি JavaScript লাইব্রেরি ফাইল নির্দিষ্ট করে যা <ResourceURL> বা <Source> উপাদানের সাথে নির্দিষ্ট করা প্রধান JavaScript ফাইলের উপর নির্ভরতা হিসাবে লোড করা হবে। স্ক্রিপ্টগুলি নীতিতে যে ক্রমে তালিকাভুক্ত করা হয়েছে সেই ক্রমে মূল্যায়ন করা হবে৷ আপনার কোড জাভাস্ক্রিপ্ট অবজেক্ট মডেলের বস্তু, পদ্ধতি এবং বৈশিষ্ট্য ব্যবহার করতে পারে।

অতিরিক্ত <IncludeURL> উপাদান সহ একাধিক জাভাস্ক্রিপ্ট নির্ভরতা সংস্থান অন্তর্ভুক্ত করুন।

<IncludeURL>jsc://my-javascript-dependency.js</IncludeURL>
ডিফল্ট: কোনোটিই নয়
উপস্থিতি: ঐচ্ছিক
প্রকার: স্ট্রিং

উদাহরণ

নমুনা বিভাগে মৌলিক উদাহরণ দেখুন।

<সম্পত্তি> উপাদান

রানটাইমে জাভাস্ক্রিপ্ট কোড থেকে আপনি অ্যাক্সেস করতে পারবেন এমন একটি সম্পত্তি নির্দিষ্ট করে।

<Properties>
    <Property name="propName">propertyValue</Property>
</Properties>
ডিফল্ট: কোনোটিই নয়
উপস্থিতি: ঐচ্ছিক
প্রকার: স্ট্রিং

গুণাবলী

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
নাম

সম্পত্তির নাম উল্লেখ করে।

N/A প্রয়োজন।

উদাহরণ

নমুনা বিভাগে উদাহরণ দেখুন।

<ResourceURL> উপাদান

প্রধান জাভাস্ক্রিপ্ট ফাইলটি নির্দিষ্ট করে যা API ফ্লোতে কার্যকর হবে। আপনি এই ফাইলটিকে API প্রক্সি স্কোপে ( /apiproxy/resources/jsc অধীনে API প্রক্সি বান্ডেলে বা API প্রক্সি সম্পাদকের ন্যাভিগেটর ফলকের স্ক্রিপ্ট বিভাগে) অথবা একাধিক API প্রক্সি জুড়ে পুনঃব্যবহারের জন্য সংস্থা বা পরিবেশের সুযোগে সংরক্ষণ করতে পারেন , যেমন রিসোর্স ফাইলে বর্ণনা করা হয়েছে। আপনার কোড জাভাস্ক্রিপ্ট অবজেক্ট মডেলের বস্তু, পদ্ধতি এবং বৈশিষ্ট্য ব্যবহার করতে পারে।

<ResourceURL>jsc://my-javascript.js</ResourceURL>
ডিফল্ট: কোনোটিই নয়
উপস্থিতি: হয় <ResourceURL> অথবা <Source> প্রয়োজন। <ResourceURL> এবং <Source> উভয়ই উপস্থিত থাকলে <ResourceURL> উপেক্ষা করা হয়।
প্রকার: স্ট্রিং

উদাহরণ

নমুনা বিভাগে মৌলিক উদাহরণ দেখুন।

<উৎস> উপাদান

আপনাকে সরাসরি নীতির XML কনফিগারেশনে JavaScript সন্নিবেশ করার অনুমতি দেয়। ঢোকানো JavaScript কোডটি কার্যকর হয় যখন নীতিটি API ফ্লোতে কার্যকর হয়।

ডিফল্ট: কোনোটিই নয়
উপস্থিতি: হয় <ResourceURL> অথবা <Source> প্রয়োজন। <ResourceURL> এবং <Source> উভয়ই উপস্থিত থাকলে <ResourceURL> উপেক্ষা করা হয়।
প্রকার: স্ট্রিং

উদাহরণ

<Javascript name='JS-ParseJsonHeaderFullString' timeLimit='200' >
  <Properties>
    <Property name='inboundHeaderName'>specialheader</Property>
    <Property name='outboundVariableName'>json_stringified</Property>
  </Properties>
  <Source>
var varname = 'request.header.' + properties.inboundHeaderName + '.values.string';
var h = context.getVariable(varname);
if (h) {
  h = JSON.parse(h);
  h.augmented = (new Date()).valueOf();
  var v = JSON.stringify(h, null, 2) + '\n';
  // further indent
  var r = new RegExp('^(\S*)','mg');
  v= v.replace(r,'    $1');
  context.setVariable(properties.outboundVariableName, v);
}
  </Source>
</Javascript>

<SSLIinfo> উপাদান

JavaScript নীতি দ্বারা তৈরি সমস্ত HTTP ক্লায়েন্ট দৃষ্টান্তগুলির জন্য TLS কনফিগার করতে ব্যবহৃত বৈশিষ্ট্যগুলি নির্দিষ্ট করে৷

    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
    </SSLInfo>
ডিফল্ট: কোনোটিই নয়
উপস্থিতি: ঐচ্ছিক
প্রকার: স্ট্রিং

একটি HTTP ক্লায়েন্টের জন্য TLS কনফিগার করার প্রক্রিয়াটি একই প্রক্রিয়া যা আপনি একটি TargetEndpoint/TargetServer-এর জন্য TLS কনফিগার করতে ব্যবহার করেন। আরও তথ্যের জন্য এজ থেকে ব্যাকএন্ডে TLS কনফিগার করা দেখুন।

ব্যবহারের নোট

একটি জাভাস্ক্রিপ্ট নীতিতে কোন প্রকৃত কোড থাকে না। পরিবর্তে, একটি জাভাস্ক্রিপ্ট নীতি একটি জাভাস্ক্রিপ্ট 'রিসোর্স' উল্লেখ করে এবং API প্রবাহের ধাপটি সংজ্ঞায়িত করে যেখানে জাভাস্ক্রিপ্ট কার্যকর করে। আপনি ম্যানেজমেন্ট UI প্রক্সি সম্পাদকের মাধ্যমে আপনার স্ক্রিপ্ট আপলোড করতে পারেন, অথবা আপনি স্থানীয়ভাবে বিকাশকারী API প্রক্সিগুলিতে /resources/jsc ডিরেক্টরিতে এটি অন্তর্ভুক্ত করতে পারেন।

জাভাস্ক্রিপ্ট নীতি কোড ডিবাগিং

ট্রেস টুলে লেনদেন আউটপুট প্যানেলে ডিবাগ তথ্য আউটপুট করতে print() ফাংশন ব্যবহার করুন। বিস্তারিত এবং উদাহরণের জন্য, JavaScript print() স্টেটমেন্ট দিয়ে ডিবাগ দেখুন।

ট্রেসে মুদ্রণ বিবৃতি দেখতে:

  1. ট্রেস টুল খুলুন এবং আপনার জাভাস্ক্রিপ্ট নীতি ধারণ করে এমন একটি প্রক্সির জন্য একটি ট্রেস সেশন শুরু করুন।
  2. প্রক্সি কল.
  3. ট্রেস টুলে, আউটপুট প্যানেল খুলতে সমস্ত লেনদেন থেকে আউটপুট ক্লিক করুন।

  4. আপনার মুদ্রণ বিবৃতি এই প্যানেলে প্রদর্শিত হবে.

আপনি ট্রেস টুলে ডিবাগ তথ্য আউটপুট করতে print() ফাংশন ব্যবহার করতে পারেন। এই ফাংশনটি সরাসরি জাভাস্ক্রিপ্ট অবজেক্ট মডেলের মাধ্যমে উপলব্ধ। বিস্তারিত জানার জন্য, " প্রিন্ট() স্টেটমেন্ট সহ জাভাস্ক্রিপ্ট ডিবাগ করুন " দেখুন।

ফ্লো ভেরিয়েবল

এই নীতিটি ডিফল্টরূপে কোনো ভেরিয়েবল তৈরি করে না; যাইহোক, আপনি কনটেক্সট অবজেক্টে মেথড কল করে আপনার জাভাস্ক্রিপ্ট কোডে ফ্লো ভেরিয়েবল সেট (এবং পেতে) করতে পারেন। একটি সাধারণ প্যাটার্ন এই মত দেখায়:

context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name"))

প্রসঙ্গ অবজেক্ট Apigee Edge JavaScript অবজেক্ট মডেলের অংশ।

ত্রুটি উল্লেখ

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.javascript.ScriptExecutionFailed 500 The JavaScript policy can throw many different types of ScriptExecutionFailed errors. Commonly seen types of errors include RangeError, ReferenceError, SyntaxError, TypeError, and URIError.
steps.javascript.ScriptExecutionFailedLineNumber 500 An error occurred in the JavaScript code. See the fault string for details. N/A
steps.javascript.ScriptSecurityError 500 A security error occurred when the JavaScript executed. See the fault string for details. N/A

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidResourceUrlFormat If the format of the resource URL specified within the <ResourceURL> or the <IncludeURL> element of the JavaScript policy is invalid, then the deployment of the API proxy fails.
InvalidResourceUrlReference If the <ResourceURL> or the <IncludeURL> elements refer to a JavaScript file that does not exist, then the deployment of the API proxy fails. The referenced source file must exist either the API proxy, environment, or organization level.
WrongResourceType This error occurs during deployment if the <ResourceURL> or the <IncludeURL> elements of the JavaScript policy refer to any resource type other than jsc (JavaScript file).
NoResourceURLOrSource The deployment of the JavaScript policy can fail with this error if the <ResourceURL> element is not declared or if the resource URL is not defined within this element. <ResourceURL> element is a mandatory element. Or, The <IncludeURL> element is declared but the resource URL is not defined within this element. The <IncludeURL> element is optional but if declared, the resource URL must be specified within the <IncludeURL> element.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "ScriptExecutionFailed"
javascript.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. javascript.JavaScript-1.failed = true

Example error response

{
  "fault": {
    "faultstring": "Execution of SetResponse failed with error: Javascript runtime error: "ReferenceError: "status" is not defined. (setresponse.js:6)\"",
    "detail": {
      "errorcode": "steps.javascript.ScriptExecutionFailed"
    }
  }
}

Example fault rule

<FaultRule name="JavaScript Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition>
    </Step>
    <Condition>(javascript.JavaScript-1.failed = true) </Condition>
</FaultRule>

স্কিমা

প্রতিটি নীতির ধরন একটি XML স্কিমা ( .xsd ) দ্বারা সংজ্ঞায়িত করা হয়। রেফারেন্সের জন্য, নীতি স্কিমা GitHub এ উপলব্ধ।

সম্পর্কিত বিষয়

Apigee সম্প্রদায় নিবন্ধ

আপনি Apigee কমিউনিটিতে এই সম্পর্কিত নিবন্ধগুলি খুঁজে পেতে পারেন: