আপনি 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, অনুচ্ছেদ ৩.৩: পাথ-এর স্পেসিফিকেশন অনুযায়ী:
URI সিনট্যাক্সের নিম্নলিখিত উপাদানগুলো রয়েছে:
foo://example.com:8042/over/there?name=ferret#nose \_/ \______________/\_________/ \_________/ \__/ | | | | | scheme authority path query fragmentpathকম্পোনেন্টটি আবশ্যক এবং এটি অবশ্যই একটি ফরওয়ার্ড স্ল্যাশ (/) দিয়ে শুরু হতে হবে ও এতে সর্বদা একটি ফরওয়ার্ড স্ল্যাশ থাকতে হবে।
সুতরাং, যদি ব্যাকএন্ড সার্ভারের রিকোয়েস্ট 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-এর পাথ অংশটি ফরওয়ার্ড স্ল্যাশ ( / ) এর পরিবর্তে একটি প্রশ্নবোধক চিহ্ন ( ? ) দিয়ে শুরু হয়। | এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা |
সাধারণ রোগ নির্ণয়ের পদক্ষেপ
এই ত্রুটি নির্ণয় করতে নিম্নলিখিত সরঞ্জাম/কৌশলগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:
এপিআই মনিটরিং
পদ্ধতি #১: এপিআই মনিটরিং ব্যবহার করা
এপিআই মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:
- উপযুক্ত ভূমিকা সম্পন্ন একজন ব্যবহারকারী হিসেবে Apigee Edge UI-তে সাইন ইন করুন ।
যে প্রতিষ্ঠানে আপনি বিষয়টি তদন্ত করতে চান, সেখানে যান।

- Analyze > API Monitoring > Investigate পৃষ্ঠায় যান।
- সেই নির্দিষ্ট সময়সীমাটি নির্বাচন করুন যার মধ্যে আপনি ত্রুটিগুলো লক্ষ্য করেছেন।
সময়ের সাপেক্ষে ফল্ট কোডের লেখচিত্র অঙ্কন করুন।
নীচে দেখানো অনুযায়ী
protocol.http.BadPathফল্ট কোডযুক্ত একটি সেল নির্বাচন করুন:
ফল্ট কোড
protocol.http.BadPathসম্পর্কিত তথ্য নিচে দেখানো হলো:
'লগ দেখুন'-এ ক্লিক করুন এবং ব্যর্থ অনুরোধটির সারিটি প্রসারিত করুন।

- লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
- স্ট্যাটাস কোড:
500 - ত্রুটির উৎস:
target - ত্রুটি কোড:
protocol.http.BadPath
- স্ট্যাটাস কোড:
- যদি ফল্ট সোর্স '
targetএবং ফল্ট কোড 'protocol.http.BadPathহয়, তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-এর পাথটি অবৈধ।
ট্রেস
পদ্ধতি #২: ট্রেস টুল ব্যবহার করা
ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:
- ট্রেস সেশনটি সক্রিয় করুন এবং হয়
-
500 Internal Server Errorত্রুটিটি ঘটার জন্য অপেক্ষা করুন, অথবা - আপনি যদি সমস্যাটি পুনরায় তৈরি করতে পারেন,
500 Internal Server Errorসমস্যাটি পুনরায় তৈরি করতে এপিআই কলটি করুন।
-
নিশ্চিত করুন যে 'Show all FlowInfos' চালু আছে:

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

ট্রেস থেকে ত্রুটির মানটি লক্ষ্য করুন:
ত্রুটি: অনুরোধের পথটি অবৈধ
যেহেতু Apigee Edge-এ 'Target Request Flow Started' পর্যায়ের পরে ত্রুটিটি দেখা দেয়, তাই এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-টিতে একটি অবৈধ পাথ রয়েছে। এমনটা হওয়ার সম্ভাবনা সবচেয়ে বেশি যদি Apigee Edge-এর ফ্লো ভ্যারিয়েবল '
target.url' (যা ব্যাকএন্ড সার্ভারের URL-কে নির্দেশ করে) টার্গেট রিকোয়েস্ট ফ্লো-এর কোনো একটি পলিসির মাধ্যমে একটি অবৈধ পাথ দিয়ে আপডেট করা হয়ে থাকে।- এরর ফ্লো থেকে টার্গেট রিকোয়েস্ট ফ্লো স্টার্টেড ফেজ পর্যন্ত প্রতিটি ফ্লো-এর 'ভেরিয়েবলস রিড অ্যান্ড অ্যাসাইনড' অংশটি পিছনের দিকে পরীক্ষা করুন।
- পলিসি নির্ধারণ করুন, যেখানে ফ্লো ভেরিয়েবল
target.urlআপডেট করা হয়েছে:নমুনা ট্রেস দেখাচ্ছে যে জাভাস্ক্রিপ্ট পলিসি `
target.url:
উপরে দেখানো নমুনা ট্রেসটিতে লক্ষ্য করুন,
JS- SetTargetURLনামের একটি জাভাস্ক্রিপ্ট পলিসিতেtarget.urlফ্লো ভ্যারিয়েবলের মান নিম্নরূপে আপডেট করা হয়েছে:target.url : https://mocktarget.apigee.net?json - লক্ষ্য করুন যে
target.urlএর মানটিতে নিম্নলিখিত উপাদানগুলো রয়েছে:- পরিকল্পনা:
https - কর্তৃপক্ষ:
mocktarget.apigee.net - পথ:
?json
- পরিকল্পনা:
- যেহেতু পাথ কম্পোনেন্টটি ফরওয়ার্ড স্ল্যাশ (
/) এর পরিবর্তে প্রশ্নবোধক চিহ্ন (?) দিয়ে শুরু হয়, তাই আপনিInvalid request pathত্রুটিটি পান। - ট্রেসটিতে থাকা AX (অ্যানালিটিক্স ডেটা রেকর্ডেড) ফেজটিতে যান এবং এটিতে ক্লিক করুন।
নিচে স্ক্রল করে Phase Details - Error Headers সেকশনে যান এবং নিচে দেখানো অনুযায়ী X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান নির্ধারণ করুন:

আপনি X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান
protocol.http.BadPathএবংtargetহিসেবে দেখতে পাবেন।targetযথাক্রমে, যা নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-এর পাথটি অবৈধ হওয়ার কারণে এই ত্রুটিটি ঘটেছে।প্রতিক্রিয়া হেডার মূল্য এক্স-এপিজি-ফল্ট-কোড protocol.http.BadPathএক্স-এপিজি-ফল্ট-সোর্স target
এনজিআইএনএক্স
পদ্ধতি #৩: NGINX অ্যাক্সেস লগ ব্যবহার করা
NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:
- আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP
500 Internal Server Errorসম্পর্কিত মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন। NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log- একটি নির্দিষ্ট সময়কালের মধ্যে
protocol.http.BadPathএরর কোড সহ কোনো500এরর আছে কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো রিকোয়েস্ট500দেখিয়ে ফেইল করছে কিনা তা খুঁজে দেখুন। যদি আপনি
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)-এর পাথটি অবৈধ।
রোগ নির্ণয়
- সাধারণ ডায়াগনোসিস ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করে
500 Internal Server Errorজন্য ফল্ট কোড এবং ফল্ট সোর্স নির্ধারণ করুন। - যদি ফল্ট কোডটি
protocol.http.BadPathহয় এবং ফল্ট সোর্সের মানtargetহয়, তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারের URL-এর পাথটি অবৈধ । Apigee Edge-এ ব্যাকএন্ড সার্ভার URL-টি
target.urlফ্লো ভেরিয়েবল দ্বারা নির্দেশিত হয়। এই ত্রুটিটি সাধারণত তখন ঘটে, যখন আপনি টার্গেট রিকোয়েস্ট ফ্লো-এর মধ্যে থাকা কোনো পলিসি (প্রক্সি/শেয়ার্ড ফ্লো-এর অধীনে) ব্যবহার করে ব্যাকএন্ড সার্ভার URL (target.url)-কে ডায়নামিকভাবে আপডেট করার চেষ্টা করেন, যার ফলে এটির পাথটি অবৈধ হয়ে যায়।নিম্নলিখিত পদ্ধতিগুলোর মধ্যে যেকোনো একটি ব্যবহার করে নির্ধারণ করুন যে ফ্লো ভ্যারিয়েবল
target.urlএর পাথটি সত্যিই অবৈধ কিনা এবং এর মানের উৎস কোনটি:ট্রেস
ট্রেস টুল ব্যবহার করে
আপনি যদি এই ত্রুটির জন্য একটি ট্রেস সংগ্রহ করে থাকেন, তাহলে "ট্রেস টুল ব্যবহার" অংশে বর্ণিত পদক্ষেপগুলি অনুসরণ করুন এবং
- যাচাই করুন
target.urlপাথটি অবৈধ কিনা, অর্থাৎ এটি ফরওয়ার্ড স্ল্যাশ (/) এর পরিবর্তে প্রশ্নবোধক চিহ্ন (?) দিয়ে শুরু হয়েছে কিনা। যদি হ্যাঁ হয়, তাহলে সেই পলিসিটি খুঁজে বের করুন যা
target.urlএর মান পরিবর্তন বা আপডেট করে একটি অবৈধ পাথ অন্তর্ভুক্ত করেছে।নমুনা ট্রেস দেখাচ্ছে যে জাভাস্ক্রিপ্ট পলিসি
target.urlফ্লো ভেরিয়েবলটি আপডেট করেছে।
- উপরের নমুনা ট্রেসটিতে লক্ষ্য করুন যে, জাভাস্ক্রিপ্ট পলিসিটি
target.urlএর মান পরিবর্তন বা আপডেট করে তাতে একটি অবৈধ পাথ যুক্ত করেছে। - উল্লেখ্য যে,
target.urlনিম্নলিখিত উপাদানগুলো রয়েছে:- পরিকল্পনা:
https - কর্তৃপক্ষ:
mocktarget.apigee.net - পথ:
?json
পাথটি ফরওয়ার্ড স্ল্যাশ (
/) এর পরিবর্তে প্রশ্নবোধক চিহ্ন (?) দিয়ে শুরু হয়েছে , তাই এটি অবৈধ। - পরিকল্পনা:
লগ
আপনার লগ সার্ভারে লগ ব্যবহার করা
- যদি এই ত্রুটির (যা একটি অনিয়মিত সমস্যা) কোনো ট্রেস আপনার কাছে না থাকে, তাহলে পরীক্ষা করে দেখুন যে আপনি MessageLogging বা ServiceCallout পলিসির মতো পলিসি ব্যবহার করে আপনার লগ সার্ভারে
target.urlফ্লো ভ্যারিয়েবলের মান সম্পর্কিত তথ্য লগ করেছেন কি না। - আপনার কাছে লগগুলো থাকলে, সেগুলো পর্যালোচনা করুন এবং
-
target.urlপাথটি অবৈধ কিনা তা যাচাই করুন, এবং - দেখুন তো, কোন পলিসি
target.urlপরিবর্তন করে তাতে অবৈধ পাথ যুক্ত করেছে, সেই তথ্যটি আপনি নির্ধারণ করতে পারেন কিনা।
-
এপিআই প্রক্সি
ব্যর্থ এপিআই প্রক্সি পর্যালোচনা করা হচ্ছে
এই ত্রুটির কোনো ট্রেস বা লগ আপনার কাছে না থাকলে, ব্যর্থ হওয়া এপিআই প্রক্সিটি পর্যালোচনা করে দেখুন কী কারণে
target.urlফ্লো ভ্যারিয়েবলটি পরিবর্তিত বা আপডেট হয়ে একটি অবৈধ পাথ ধারণ করেছে। নিম্নলিখিত বিষয়গুলো যাচাই করুন:- এপিআই প্রক্সির ভেতরের নীতি
- প্রক্সি থেকে আহ্বান করা যেকোনো শেয়ার্ড ফ্লো
- যাচাই করুন
সেই নির্দিষ্ট পলিসিটি (যেমন: 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 Edgeprotocol.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 Edgeprotocol.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 Edgeprotocol.http.BadPath.http.BadPath এরর কোড সহ500 Internal Server Errorরিটার্ন করে।- পরিকল্পনা:
সমাধান
URL স্পেসিফিকেশন RFC 3986-এর ৩ নং সেকশন: সিনট্যাক্স কম্পোনেন্টস অনুযায়ী, path কম্পোনেন্ট থাকা আবশ্যক এবং এটি অবশ্যই সর্বদা "/" দিয়ে শুরু হতে হবে। তাই এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:
- নিশ্চিত করুন যে,
target.urlফ্লো ভেরিয়েবল দ্বারা নির্দেশিত ব্যাকএন্ড সার্ভার URL-টির একটি বৈধ পাথ থাকে এবং এটি সর্বদা একটি ফরওয়ার্ড স্ল্যাশ (/) দিয়ে শুরু হয় ।- কিছু ক্ষেত্রে, পাথে কোনো রিসোর্সের নাম নাও থাকতে পারে, সেক্ষেত্রে নিশ্চিত করুন যে পাথে অন্তত একটি ফরওয়ার্ড স্ল্যাশ (
/) আছে। - যদি আপনি
target.urlফ্লো ভেরিয়েবলের মান নির্ধারণ করতে অন্য কোনো ভেরিয়েবল ব্যবহার করেন, তাহলে নিশ্চিত করুন যে সেই ভেরিয়েবলগুলোর পাথ অবৈধ নয়। - যদি আপনি
target.urlফ্লো ভ্যারিয়েবলের মান নির্ধারণ করতে কোনো স্ট্রিং অপারেশন করেন, তাহলে নিশ্চিত করুন যে সেই স্ট্রিং অপারেশনের ফলাফলে কোনো অবৈধ পাথ নেই।
- কিছু ক্ষেত্রে, পাথে কোনো রিসোর্সের নাম নাও থাকতে পারে, সেক্ষেত্রে নিশ্চিত করুন যে পাথে অন্তত একটি ফরওয়ার্ড স্ল্যাশ (
উপরে আলোচিত নমুনাগুলিতে, আপনি নিচে ব্যাখ্যা করা পদ্ধতি অনুযায়ী এই সমস্যাটি সমাধান করতে পারেন:
নমুনা #১
নমুনা #১: জাভাস্ক্রিপ্ট পলিসি
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
তথ্যসূত্র