500 অভ্যন্তরীণ সার্ভার ত্রুটি - BadPath

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

এপিআই কলের প্রতিক্রিয়া হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশনটি 500 Internal Server Error এরর স্ট্যাটাস কোড এবং protocol.http.BadPath এরর কোডটি পায়।

ত্রুটি বার্তা

ক্লায়েন্ট অ্যাপ্লিকেশনটি নিম্নলিখিত প্রতিক্রিয়া কোডটি পায়:

HTTP/1.1 500 Internal Server Error

এছাড়াও, আপনি নিম্নলিখিত ত্রুটি বার্তাটি দেখতে পারেন:

{
   "fault":{
      "faultstring":"Invalid request path",
      "detail":{
         "errorcode":"protocol.http.BadPath"
      }
   }
}

সম্ভাব্য কারণসমূহ

ফ্লো ভ্যারিয়েবল target.url দ্বারা নির্দেশিত ব্যাকএন্ড সার্ভারের রিকোয়েস্ট URL-এ কোনো path থাকলে এই এররটি ঘটে। path যেটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়, যা অবৈধ ।

RFC 3986, অনুচ্ছেদ ৩: সিনট্যাক্স কম্পোনেন্টস এবং RFC 3986, অনুচ্ছেদ ৩.৩: পাথ-এর স্পেসিফিকেশন অনুযায়ী:

  1. URI সিনট্যাক্সের নিম্নলিখিত উপাদানগুলো রয়েছে:

            foo://example.com:8042/over/there?name=ferret#nose
            \_/   \______________/\_________/ \_________/ \__/
             |            |            |            |       |
          scheme      authority       path        query   fragment
    
  2. path কম্পোনেন্টটি আবশ্যক এবং এটি অবশ্যই একটি ফরওয়ার্ড স্ল্যাশ ( / ) দিয়ে শুরু হতে হবে ও এতে সর্বদা একটি ফরওয়ার্ড স্ল্যাশ থাকতে হবে।

সুতরাং, যদি ব্যাকএন্ড সার্ভারের রিকোয়েস্ট URL-এর path কম্পোনেন্ট ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়, তাহলে Apigee Edge 500 Internal Server Error এবং protocol.http.BadPath এরর কোড দিয়ে রেসপন্স করে।

উদাহরণস্বরূপ: যদি target.url মান https://www.mocktarget.apigee.net?json হয়, তাহলে এই ত্রুটিটি ঘটে কারণ path ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে একটি প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হওয়ায় এটিকে অবৈধ বলে মনে করা হয়।

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
ব্যাকএন্ড সার্ভারের URL (target.url)-এর পাথটি অবৈধ। ফ্লো ভ্যারিয়েবল target.url দ্বারা উপস্থাপিত ব্যাকএন্ড সার্ভার URL-এর পাথ অংশটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে একটি প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা

সাধারণ রোগ নির্ণয়ের পদক্ষেপ

এই ত্রুটি নির্ণয় করতে নিম্নলিখিত সরঞ্জাম/কৌশলগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:

এপিআই মনিটরিং

পদ্ধতি #১: এপিআই মনিটরিং ব্যবহার করা

এপিআই মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. উপযুক্ত ভূমিকা সম্পন্ন একজন ব্যবহারকারী হিসেবে Apigee Edge UI-তে সাইন ইন করুন ।
  2. যে প্রতিষ্ঠানে আপনি বিষয়টি তদন্ত করতে চান, সেখানে যান।

  3. Analyze > API Monitoring > Investigate পৃষ্ঠায় যান।
  4. সেই নির্দিষ্ট সময়সীমাটি নির্বাচন করুন যার মধ্যে আপনি ত্রুটিগুলো লক্ষ্য করেছেন।
  5. সময়ের সাপেক্ষে ফল্ট কোডের লেখচিত্র অঙ্কন করুন।

  6. নীচে দেখানো অনুযায়ী protocol.http.BadPath ফল্ট কোডযুক্ত একটি সেল নির্বাচন করুন:

  7. ফল্ট কোড protocol.http.BadPath সম্পর্কিত তথ্য নিচে দেখানো হলো:

  8. 'লগ দেখুন'-এ ক্লিক করুন এবং ব্যর্থ অনুরোধটির সারিটি প্রসারিত করুন।

  9. লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
    • স্ট্যাটাস কোড: 500
    • ত্রুটির উৎস: target
    • ত্রুটি কোড: protocol.http.BadPath
  10. যদি ফল্ট সোর্স ' target এবং ফল্ট কোড ' protocol.http.BadPath হয়, তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-এর পাথটি অবৈধ।

ট্রেস

পদ্ধতি #২: ট্রেস টুল ব্যবহার করা

ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. ট্রেস সেশনটি সক্রিয় করুন এবং হয়
    • 500 Internal Server Error ত্রুটিটি ঘটার জন্য অপেক্ষা করুন, অথবা
    • আপনি যদি সমস্যাটি পুনরায় তৈরি করতে পারেন, 500 Internal Server Error সমস্যাটি পুনরায় তৈরি করতে এপিআই কলটি করুন।
  2. নিশ্চিত করুন যে 'Show all FlowInfos' চালু আছে:

  3. ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন এবং ট্রেসটি পরীক্ষা করুন।
  4. ট্রেসের বিভিন্ন ধাপ অতিক্রম করে ত্রুটিটি কোথায় ঘটেছে তা খুঁজে বের করুন।
  5. আপনি সাধারণত 'টার্গেট রিকোয়েস্ট ফ্লো স্টার্টেড' পর্যায়ের পরের ফ্লোতে ত্রুটিটি দেখতে পাবেন, যেমনটি নিচে দেখানো হয়েছে:

  6. ট্রেস থেকে ত্রুটির মানটি লক্ষ্য করুন:

    ত্রুটি: অনুরোধের পথটি অবৈধ

    যেহেতু Apigee Edge-এ 'Target Request Flow Started' পর্যায়ের পরে ত্রুটিটি দেখা দেয়, তাই এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-টিতে একটি অবৈধ পাথ রয়েছে। এমনটা হওয়ার সম্ভাবনা সবচেয়ে বেশি যদি Apigee Edge-এর ফ্লো ভ্যারিয়েবল ' target.url ' (যা ব্যাকএন্ড সার্ভারের URL-কে নির্দেশ করে) টার্গেট রিকোয়েস্ট ফ্লো-এর কোনো একটি পলিসির মাধ্যমে একটি অবৈধ পাথ দিয়ে আপডেট করা হয়ে থাকে।

  7. এরর ফ্লো থেকে টার্গেট রিকোয়েস্ট ফ্লো স্টার্টেড ফেজ পর্যন্ত প্রতিটি ফ্লো-এর 'ভেরিয়েবলস রিড অ্যান্ড অ্যাসাইনড' অংশটি পিছনের দিকে পরীক্ষা করুন।
  8. পলিসি নির্ধারণ করুন, যেখানে ফ্লো ভেরিয়েবল target.url আপডেট করা হয়েছে:

    নমুনা ট্রেস দেখাচ্ছে যে জাভাস্ক্রিপ্ট পলিসি ` target.url:

    উপরে দেখানো নমুনা ট্রেসটিতে লক্ষ্য করুন, JS- SetTargetURL নামের একটি জাভাস্ক্রিপ্ট পলিসিতে target.url ফ্লো ভ্যারিয়েবলের মান নিম্নরূপে আপডেট করা হয়েছে: target.url : https://mocktarget.apigee.net?json

  9. লক্ষ্য করুন যে target.url এর মানটিতে নিম্নলিখিত উপাদানগুলো রয়েছে:
    • পরিকল্পনা: https
    • কর্তৃপক্ষ: mocktarget.apigee.net
    • পথ: ?json
  10. যেহেতু পাথ কম্পোনেন্টটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়, তাই আপনি Invalid request path ত্রুটিটি পান।
  11. ট্রেসটিতে থাকা AX (অ্যানালিটিক্স ডেটা রেকর্ডেড) ফেজটিতে যান এবং এটিতে ক্লিক করুন।
  12. নিচে স্ক্রল করে Phase Details - Error Headers সেকশনে যান এবং নিচে দেখানো অনুযায়ী X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান নির্ধারণ করুন:

  13. আপনি X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান protocol.http.BadPath এবং target হিসেবে দেখতে পাবেন। target যথাক্রমে, যা নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-এর পাথটি অবৈধ হওয়ার কারণে এই ত্রুটিটি ঘটেছে।

    প্রতিক্রিয়া হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড protocol.http.BadPath
    এক্স-এপিজি-ফল্ট-সোর্স target

এনজিআইএনএক্স

পদ্ধতি #৩: NGINX অ্যাক্সেস লগ ব্যবহার করা

NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP 500 Internal Server Error সম্পর্কিত মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন।
  2. NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:

    /opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log

  3. একটি নির্দিষ্ট সময়কালের মধ্যে protocol.http.BadPath এরর কোড সহ কোনো 500 এরর আছে কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো রিকোয়েস্ট 500 দেখিয়ে ফেইল করছে কিনা তা খুঁজে দেখুন।
  4. যদি আপনি protocol.http.BadPath এর মানের সাথে মিলে যাওয়া X-Apigee-fault-code সহ কোনো 500 এরর খুঁজে পান, তাহলে X-Apigee-fault-source-এর মান নির্ধারণ করুন।

    NGINX অ্যাক্সেস লগ থেকে প্রাপ্ত 500 ত্রুটির একটি নমুনা:

    NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিটিতে X-Apigee-fault-code এবং X-Apigee-fault-source-এর জন্য নিম্নলিখিত মানগুলি রয়েছে:

    হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড protocol.http.BadPath
    এক্স-এপিজি-ফল্ট-সোর্স target

    লক্ষ্য করুন যে X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান হলো protocol.http.BadPath এবং target যথাক্রমে, যা নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-এর পাথটি অবৈধ হওয়ার কারণে এই ত্রুটিটি ঘটেছে।

কারণ: ব্যাকএন্ড সার্ভারের URL (target.url)-এর পাথটি অবৈধ।

রোগ নির্ণয়

  1. সাধারণ ডায়াগনোসিস ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করে 500 Internal Server Error জন্য ফল্ট কোড এবং ফল্ট সোর্স নির্ধারণ করুন।
  2. যদি ফল্ট কোডটি protocol.http.BadPath হয় এবং ফল্ট সোর্সের মান target হয়, তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-এর পাথটি অবৈধ ।
  3. Apigee Edge-এ ব্যাকএন্ড সার্ভার URL-টি target.url ফ্লো ভেরিয়েবল দ্বারা নির্দেশিত হয়। এই ত্রুটিটি সাধারণত তখন ঘটে, যখন আপনি টার্গেট রিকোয়েস্ট ফ্লো-এর মধ্যে থাকা কোনো পলিসি (প্রক্সি/শেয়ার্ড ফ্লো-এর অধীনে) ব্যবহার করে ব্যাকএন্ড সার্ভার URL ( target.url )-কে ডায়নামিকভাবে আপডেট করার চেষ্টা করেন, যার ফলে এটির পাথটি অবৈধ হয়ে যায়।

  4. নিম্নলিখিত পদ্ধতিগুলোর মধ্যে যেকোনো একটি ব্যবহার করে নির্ধারণ করুন যে ফ্লো ভ্যারিয়েবল target.url এর পাথটি সত্যিই অবৈধ কিনা এবং এর মানের উৎস কোনটি:

    ট্রেস

    ট্রেস টুল ব্যবহার করে

    আপনি যদি এই ত্রুটির জন্য একটি ট্রেস সংগ্রহ করে থাকেন, তাহলে "ট্রেস টুল ব্যবহার" অংশে বর্ণিত পদক্ষেপগুলি অনুসরণ করুন এবং

    1. যাচাই করুন target.url পাথটি অবৈধ কিনা, অর্থাৎ এটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়েছে কিনা।
    2. যদি হ্যাঁ হয়, তাহলে সেই পলিসিটি খুঁজে বের করুন যা target.url এর মান পরিবর্তন বা আপডেট করে একটি অবৈধ পাথ অন্তর্ভুক্ত করেছে।

      নমুনা ট্রেস দেখাচ্ছে যে জাভাস্ক্রিপ্ট পলিসি target.url ফ্লো ভেরিয়েবলটি আপডেট করেছে।

    3. উপরের নমুনা ট্রেসটিতে লক্ষ্য করুন যে, জাভাস্ক্রিপ্ট পলিসিটি target.url এর মান পরিবর্তন বা আপডেট করে তাতে একটি অবৈধ পাথ যুক্ত করেছে।
    4. উল্লেখ্য যে, target.url নিম্নলিখিত উপাদানগুলো রয়েছে:
      • পরিকল্পনা: https
      • কর্তৃপক্ষ: mocktarget.apigee.net
      • পথ: ?json

      পাথটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়েছে , তাই এটি অবৈধ।

    লগ

    আপনার লগ সার্ভারে লগ ব্যবহার করা

    1. যদি এই ত্রুটির (যা একটি অনিয়মিত সমস্যা) কোনো ট্রেস আপনার কাছে না থাকে, তাহলে পরীক্ষা করে দেখুন যে আপনি MessageLogging বা ServiceCallout পলিসির মতো পলিসি ব্যবহার করে আপনার লগ সার্ভারে target.url ফ্লো ভ্যারিয়েবলের মান সম্পর্কিত তথ্য লগ করেছেন কি না।
    2. আপনার কাছে লগগুলো থাকলে, সেগুলো পর্যালোচনা করুন এবং
      1. target.url পাথটি অবৈধ কিনা তা যাচাই করুন, এবং
      2. দেখুন তো, কোন পলিসি target.url পরিবর্তন করে তাতে অবৈধ পাথ যুক্ত করেছে, সেই তথ্যটি আপনি নির্ধারণ করতে পারেন কিনা।

    এপিআই প্রক্সি

    ব্যর্থ এপিআই প্রক্সি পর্যালোচনা করা হচ্ছে

    এই ত্রুটির কোনো ট্রেস বা লগ আপনার কাছে না থাকলে, ব্যর্থ হওয়া এপিআই প্রক্সিটি পর্যালোচনা করে দেখুন কী কারণে target.url ফ্লো ভ্যারিয়েবলটি পরিবর্তিত বা আপডেট হয়ে একটি অবৈধ পাথ ধারণ করেছে। নিম্নলিখিত বিষয়গুলো যাচাই করুন:

    • এপিআই প্রক্সির ভেতরের নীতি
    • প্রক্সি থেকে আহ্বান করা যেকোনো শেয়ার্ড ফ্লো
  5. সেই নির্দিষ্ট পলিসিটি (যেমন: AssignMessage বা JavaScript) সাবধানে পরীক্ষা করুন যা target.url ফ্লো ভেরিয়েবলটিকে পরিবর্তন বা আপডেট করে এবং target.url পাথটি অবৈধ হয়ে যাওয়ার কারণ নির্ণয় করুন।

    এখানে কয়েকটি উদাহরণ পলিসি দেওয়া হল, যেগুলো target.url ফ্লো ভেরিয়েবলটিকে ভুলভাবে একটি অবৈধ পাথ অন্তর্ভুক্ত করার জন্য আপডেট করে, যার ফলে এই ত্রুটিটি ঘটে।

    নমুনা #১

    নমুনা #১: জাভাস্ক্রিপ্ট পলিসি target.url ভেরিয়েবল আপডেট করছে

    var url = "https://mocktarget.apigee.net?json"
    context.setVariable("target.url", url);

    উপরের নমুনাটিতে লক্ষ্য করুন যে, target.url ফ্লো ভেরিয়েবলটি `url` নামক অন্য একটি ভেরিয়েবলে থাকা ` https://mocktarget.apigee.net?json মান দ্বারা আপডেট করা হয়েছে url .

    লক্ষ্য করুন যে, url এর মানটিতে নিম্নলিখিত উপাদানগুলো রয়েছে:

    • পরিকল্পনা: https
    • কর্তৃপক্ষ: mocktarget.apigee.net
    • পথ: ?json

    পাথটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে একটি প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়েছে , যা অবৈধ । তাই, Apigee Edge protocol.http.BadPath .http.BadPath এরর কোড সহ 500 Internal Server Error রিটার্ন করে।

    নমুনা #২

    নমুনা #২: রিকোয়েস্ট হেডারের মানের উপর ভিত্তি করে জাভাস্ক্রিপ্ট পলিসি দ্বারা target.url ভেরিয়েবল আপডেট করা।

    var path = context.getVariable("request.header.Path");
    var url = "https://mocktarget.apigee.net" + path
    context.setVariable("target.url", url);

    উপরের নমুনাটিতে লক্ষ্য করুন যে, ` url একটি ভেরিয়েবলে থাকা ` https://mocktarget.apigee.net মানটি সংযুক্ত করে target.url ফ্লো ভেরিয়েবলটি আপডেট করা হয়েছে। url এবং path নামক আরেকটি ভেরিয়েবলের মান, যার মান request.header.Path .

    আপনার কাছে যদি প্রকৃত অনুরোধ বা ট্রেস-এর অ্যাক্সেস থাকে, তাহলে আপনি request.header.Path এ পাঠানো আসল মানটি যাচাই করতে পারবেন।

    ব্যবহারকারীর করা নমুনা অনুরোধ

    curl -v https://HOST_ALIAS/v1/myproxy -H "Authorization: Bearer <token> -H "Path: ?user"
    

    এই উদাহরণে, রিকোয়েস্টের অংশ হিসেবে হেডার পাথ পাঠানো হয় না। তাই, জাভাস্ক্রিপ্ট পলিসিতে থাকা ' path ভ্যারিয়েবলের মান null ।

    সুতরাং:

    • url = https://mocktarget.apigee.net + path
    • url = https://mocktarget.apigee.net + "?user"
    • target.url = https://mocktarget.apigee.net?user

    লক্ষ্য করুন যে, target.url এর মানটিতে নিম্নলিখিত উপাদানগুলো রয়েছে:

    • পরিকল্পনা: https
    • কর্তৃপক্ষ: mocktarget.apigee.net
    • পথ: ?user

    পাথটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে একটি প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়েছে , যা অবৈধ । তাই, Apigee Edge protocol.http.BadPath .http.BadPath এরর কোড সহ 500 Internal Server Error রিটার্ন করে।

    নমুনা #৩

    নমুনা #৩: AssignMessage পলিসি target.url ভেরিয়েবল আপডেট করছে

    <AssignMessage async="false" continueOnError="false" enabled="true" name="AM-SetTargetURL">
        <DisplayName>AM-SetTargetURL</DisplayName>
        <AssignVariable>
             <Name>target.url</Name>
             <Value>https://mocktarget.apigee.net?echo</Value>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>

    লক্ষ্য করুন যে, url এর মানটিতে নিম্নলিখিত উপাদানগুলো রয়েছে:

    • পরিকল্পনা: https
    • কর্তৃপক্ষ: mocktarget.apigee.net
    • পথ: ?echo

    এই উদাহরণেও, পাথটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে একটি প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়েছে , যা অবৈধ । তাই, Apigee Edge protocol.http.BadPath .http.BadPath এরর কোড সহ 500 Internal Server Error রিটার্ন করে।

সমাধান

URL স্পেসিফিকেশন RFC 3986-এর ৩ নং সেকশন: সিনট্যাক্স কম্পোনেন্টস অনুযায়ী, path কম্পোনেন্ট থাকা আবশ্যক এবং এটি অবশ্যই সর্বদা "/" দিয়ে শুরু হতে হবে। তাই এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:

  1. নিশ্চিত করুন যে, target.url ফ্লো ভেরিয়েবল দ্বারা নির্দেশিত ব্যাকএন্ড সার্ভার URL-টির একটি বৈধ পাথ থাকে এবং এটি সর্বদা একটি ফরওয়ার্ড স্ল্যাশ ( / ) দিয়ে শুরু হয় ।
    1. কিছু ক্ষেত্রে, পাথে কোনো রিসোর্সের নাম নাও থাকতে পারে, সেক্ষেত্রে নিশ্চিত করুন যে পাথে অন্তত একটি ফরওয়ার্ড স্ল্যাশ ( / ) আছে।
    2. যদি আপনি target.url ফ্লো ভেরিয়েবলের মান নির্ধারণ করতে অন্য কোনো ভেরিয়েবল ব্যবহার করেন, তাহলে নিশ্চিত করুন যে সেই ভেরিয়েবলগুলোর পাথ অবৈধ নয়।
    3. যদি আপনি target.url ফ্লো ভ্যারিয়েবলের মান নির্ধারণ করতে কোনো স্ট্রিং অপারেশন করেন, তাহলে নিশ্চিত করুন যে সেই স্ট্রিং অপারেশনের ফলাফলে কোনো অবৈধ পাথ নেই।
  2. উপরে আলোচিত নমুনাগুলিতে, আপনি নিচে ব্যাখ্যা করা পদ্ধতি অনুযায়ী এই সমস্যাটি সমাধান করতে পারেন:

    নমুনা #১

    নমুনা #১: জাভাস্ক্রিপ্ট পলিসি target.url ভেরিয়েবল আপডেট করছে

    এই সমস্যাটি সমাধান করতে, নিচে দেখানো অনুযায়ী url ভেরিয়েবলে প্রশ্নবোধক চিহ্নের ( ? ) পরিবর্তে ফরওয়ার্ড স্ল্যাশ ( / ) ব্যবহার করুন:

    var url = "https://mocktarget.apigee.net/json"
    context.setVariable("target.url", url);

    নমুনা #২

    নমুনা #২: রিকোয়েস্ট হেডারের মানের উপর ভিত্তি করে জাভাস্ক্রিপ্ট পলিসি দ্বারা target.url ভেরিয়েবল আপডেট করা।

    var path = context.getVariable("request.header.Path");
    var url = "https://mocktarget.apigee.net" + path
    context.setVariable("target.url", url);

    এই সমস্যাটি সমাধান করতে, নিচে দেখানো পদ্ধতি অনুযায়ী রিকোয়েস্ট হেডার Path হিসেবে একটি বৈধ পাথ দিন, যেমন: /user

    নমুনা অনুরোধ:

    curl -v https://HOST_ALIAS/v1/myproxy -H "Authorization: Bearer <token> -H "Path: /user"
    

    নমুনা #৩

    নমুনা #৩: অ্যাসাইনমেসেজ পলিসি দ্বারা target.url ভেরিয়েবল আপডেট করা

    AssignMessage পলিসির <Value> এলিমেন্টে একটি বৈধ পাথ যোগ করুন। অর্থাৎ, প্রশ্নবোধক চিহ্ন ( ? ) প্রতিস্থাপন করুন। সাথে একটি ফরওয়ার্ড স্ল্যাশ ( / ) এই সমস্যাটি সমাধান করতে, নিচে দেখানো অনুযায়ী <Value> এলিমেন্টের মধ্যে এটিকে https://mocktarget.apigee.net/echo তে সেট করুন:

    <AssignMessage async="false" continueOnError="false" enabled="true" name="AM-SetTargetURL">
        <DisplayName>AM-SetTargetURL</DisplayName>
        <AssignVariable>
             <Name>target.url</Name>
             <Value>https://mocktarget.apigee.net/echo</Value>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>

    স্পেসিফিকেশন

    Apigee Edge আশা করে যে path উপাদান ব্যাকএন্ড সার্ভারের URL অবশ্যই একটি দিয়ে শুরু হতে হবে। ফরওয়ার্ড স্ল্যাশ ( / ) নিম্নলিখিত বিবরণ অনুযায়ী:

    স্পেসিফিকেশন
    RFC 3986, ধারা ৩: সিনট্যাক্স উপাদানসমূহ
    RFC 3986, ধারা ৩.৩: পথ

    আপনার যদি এখনও Apigee Support-এর কাছ থেকে কোনো সাহায্যের প্রয়োজন হয়, তাহলে Must gather diagnostic information- এ যান।

    রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে

    উপরের নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge Support-এর সাথে যোগাযোগ করুন:

    আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

    • সংস্থার নাম
    • পরিবেশের নাম
    • এপিআই প্রক্সি নাম
    • protocol.http.BadPath এরর কোড সহ 500 Internal Server Error টি পুনরুৎপাদন করতে ব্যবহৃত সম্পূর্ণ curl কমান্ড।
    • এপিআই অনুরোধগুলির ট্রেস ফাইল

    আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

    • ব্যর্থ অনুরোধগুলির জন্য সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত হয়েছে।
    • পরিবেশের নাম
    • এপিআই প্রক্সি বান্ডেল
    • এপিআই অনুরোধগুলির ট্রেস ফাইল
    • NGINX অ্যাক্সেস লগ:

      /opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log

      যেখানে: ORG , ENV এবং PORT# প্রকৃত মান দ্বারা প্রতিস্থাপিত হয়।

    • মেসেজ প্রসেসর সিস্টেম লগ /opt/apigee/var/log/edge-message- processor/logs/system.log

    তথ্যসূত্র

    প্রবাহ চলক - লক্ষ্য