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

আপনি 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 প্রয়োজন

নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:

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

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

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

একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ।

একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে true সেট করুন৷

মিথ্যা ঐচ্ছিক
enabled

নীতি প্রয়োগ করতে true সেট করুন৷

নীতি বন্ধ করতে false সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।

সত্য ঐচ্ছিক
async

এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

মিথ্যা অবচয়

<DisplayName> উপাদান

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।

<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট

N/A

আপনি এই উপাদানটি বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হবে।

উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং

<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 অবজেক্ট মডেলের অংশ।

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

এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
steps.javascript.ScriptExecutionFailed 500 জাভাস্ক্রিপ্ট নীতি বিভিন্ন ধরনের ScriptExecutionFailed ত্রুটি নিক্ষেপ করতে পারে। সাধারণত দেখা যায় এমন ত্রুটিগুলির মধ্যে রয়েছে RangeError , ReferenceError , SyntaxError , TypeError , এবং URIError
steps.javascript.ScriptExecutionFailedLineNumber 500 জাভাস্ক্রিপ্ট কোডে একটি ত্রুটি ঘটেছে৷ বিস্তারিত জানার জন্য ফল্ট স্ট্রিং দেখুন। N/A
steps.javascript.ScriptSecurityError 500 JavaScript কার্যকর করার সময় একটি নিরাপত্তা ত্রুটি ঘটেছে। বিস্তারিত জানার জন্য ফল্ট স্ট্রিং দেখুন। N/A

স্থাপনার ত্রুটি

আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷

ত্রুটির নাম কারণ ঠিক করুন
InvalidResourceUrlFormat যদি জাভাস্ক্রিপ্ট নীতির <ResourceURL> বা <IncludeURL> উপাদানের মধ্যে নির্দিষ্ট করা রিসোর্স ইউআরএলের ফর্ম্যাটটি অবৈধ হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।
InvalidResourceUrlReference যদি <ResourceURL> বা <IncludeURL> উপাদানগুলি এমন একটি JavaScript ফাইলকে নির্দেশ করে যা বিদ্যমান নেই, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। উল্লেখিত সোর্স ফাইলটি অবশ্যই API প্রক্সি, এনভায়রনমেন্ট বা প্রতিষ্ঠানের স্তরে বিদ্যমান থাকতে হবে।
WrongResourceType জাভাস্ক্রিপ্ট নীতির <ResourceURL> বা <IncludeURL> উপাদানগুলি jsc (জাভাস্ক্রিপ্ট ফাইল) ব্যতীত অন্য যেকোন রিসোর্স প্রকারকে উল্লেখ করলে এই ত্রুটিটি স্থাপনের সময় ঘটে।
NoResourceURLOrSource জাভাস্ক্রিপ্ট নীতির স্থাপনা এই ত্রুটির সাথে ব্যর্থ হতে পারে যদি <ResourceURL> উপাদানটি ঘোষণা না করা হয় বা যদি এই উপাদানটির মধ্যে সংস্থান URL সংজ্ঞায়িত না করা হয়। <ResourceURL> উপাদান একটি বাধ্যতামূলক উপাদান। অথবা, <IncludeURL> উপাদানটি ঘোষণা করা হয়েছে কিন্তু রিসোর্স URL এই উপাদানটির মধ্যে সংজ্ঞায়িত করা হয়নি। <IncludeURL> উপাদানটি ঐচ্ছিক কিন্তু ঘোষিত হলে, সম্পদ URL অবশ্যই <IncludeURL> উপাদানের মধ্যে নির্দিষ্ট করতে হবে।

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

যখন এই নীতি রানটাইমে একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷ আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।

ভেরিয়েবল যেখানে উদাহরণ
fault.name=" fault_name " fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। fault.name Matches "ScriptExecutionFailed"
javascript. policy_name .failed policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যা ত্রুটিটি ফেলেছে। javascript.JavaScript-1.failed = true

উদাহরণ ত্রুটি প্রতিক্রিয়া

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

উদাহরণ দোষ নিয়ম

<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 কমিউনিটিতে এই সম্পর্কিত নিবন্ধগুলি খুঁজে পেতে পারেন: