شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
هنگامی که درخواستی را برای یک پراکسی API ارسال می کنید، بسته به نحوه پیکربندی پروکسی API، می توانید یک یا همه اطلاعات زیر را ارسال کنید:
- درخواست سرصفحه ها
- پارامترهای پرس و جو
- داده های فرم
- محموله های XML یا JSON
- URI های منبع
به طور پیش فرض، تمام داده های یک درخواست بدون تغییر از ProxyEndpoint به TargetEndpoint ارسال می شود. بنابراین، هنگامی که TargetEndpoint درخواست را به سرور باطن ارائه می کند، تمام اطلاعات موجود در درخواست اصلی به سرویس باطن ارسال می شود.
همین امر در مورد پاسخ دریافت شده توسط Edge از سرویس backend نیز صادق است. بهطور پیشفرض، تمام دادههای دریافتشده در پاسخ بدون تغییر به برنامهای ارسال میشود که درخواست را آغاز کرده است.
چگونه داده های درخواست به سرور باطن ارسال می شود؟
تصویر زیر یک تعریف پراکسی API را نشان می دهد:
برای این پروکسی API:
- میزبان مجازی پروکسی API: "پیش فرض"
- دامنه تعریف شده توسط میزبان مجازی: "http://myOrg-prod.apigee.net"
- مسیر پایه پروکسی: "/v1/weather"
- TargetEndpoint مشخص شده توسط قانون مسیر: "پیش فرض"
- URL هدف: "http://weather.yahooapis.com"
یک برنامه مشتری با استفاده از دستور curl
زیر یک درخواست GET
به پراکسی API می دهد:
curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282
توجه داشته باشید که این درخواست حاوی منبع "forecastrss" و یک پارامتر query، w
. Edge درخواست را مطابق شکل زیر تجزیه می کند و بخش هایی از درخواست را به متغیرهای جریان اختصاص می دهد:
{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}
متغیرهای جریان با مقادیر زیر تنظیم می شوند:
-
request.verb
: "GET" -
proxy.basepath
: "/v1/weather" -
proxy.pathsuffix
: "forecastrss" -
request.querystring
: "w=12797282"
سپس TargetEndpoint با استفاده از اطلاعات درخواستی، درخواستی را به سرویس باطن ارسال می کند:
{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}
توجه داشته باشید که چگونه پارامترهای منبع و پرس و جو مشخص شده در درخواست به طور خودکار در درخواست به سرور باطن گنجانده می شوند. از تعریف TargetEndpoint، درخواست به شکل زیر است:
curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282
مانند پارامترهای پرس و جو، هر سرصفحه یا پارامتر فرمی که در درخواست به پراکسی API اضافه می کنید به سرور باطن ارسال می شود. به عنوان مثال، شما درخواست زیر را که شامل یک هدر است، ارسال می کنید:
curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282
یا درخواستی در فرم زیر برای اضافه کردن هدر و داده های فرم:
curl -X POST -H "Content-type:application/json" -d \ '{"email" : "janetutorialxml@example.com", "firstName" : "Jane", "lastName" : "Tutorial", "userName" : "jtutorialxml" }' \ http://myOrg-prod.apigee.net/v1/register/user
در هر دو مثال، هدرها و داده های فرم بدون تغییر به سرویس Backend ارسال می شوند. سرصفحه ها با متغیرهای جریان مانند request.headers.count
و request.headers.names
نمایش داده می شوند. داده های فرم با متغیرهای جریان مانند request.formparam.count
و request.formparam.names
نمایش داده می شود.
داده های پاسخ چگونه برگردانده می شوند؟
بهطور پیشفرض، تمام دادههای دریافت شده توسط Edge از سرویس پشتیبان در پاسخ، بدون تغییر به برنامهای ارسال میشود که درخواست را آغاز کرده است. همانطور که در بالا برای درخواست توضیح داده شد، داده های بازگشتی در پاسخ از طریق متغیرهای جریان در Edge قابل دسترسی هستند. برای اطلاعات بیشتر، مرجع متغیرهای جریان را ببینید.
به داده های درخواست و پاسخ در یک پراکسی API دسترسی داشته باشید
مواقعی وجود دارد که می خواهید داده های درخواست را قبل از ارسال به سرور باطن تغییر دهید. به عنوان مثال:
- برای حذف اطلاعات امنیتی مورد استفاده توسط Edge برای تأیید اعتبار درخواست ها. این اطلاعات توسط سرویس باطن مورد نیاز نیست.
- برای افزودن دادههای ارسال شده به سرویس پشتیبان، به عنوان مثال برای ردیابی کاربران یا جمعآوری تجزیه و تحلیل.
- برای پردازش مشروط درخواست بر اساس داده های درخواست. به عنوان مثال، یک پروکسی API می تواند چندین نقطه هدف داشته باشد. TargetEndpoint استفاده شده توسط درخواست توسط داده های درخواست تعیین می شود. سپس آن دادهها را قبل از ارسال به سرویس پشتیبان از درخواست حذف میکنید.
همین امر برای داده های موجود در پاسخ نیز صادق است. به عنوان بخشی از پردازش پاسخ، پروکسی API ممکن است بخواهد داده ها را قبل از بازگرداندن آن به برنامه درخواست کننده اصلاح کند.
دسترسی به پیام های درخواست
میتوانید از سیاستها برای دسترسی و تغییر بخشهایی از پیام درخواست استفاده کنید. این قسمت ها عبارتند از:
- سرصفحه ها
- پارامترهای پرس و جو
- پارامترهای فرم
- آدرس IP منبع
- متن پیام HTTP
در یک جریان عادی، هنگامی که درخواست پردازش شد، پروکسی درخواست تبدیل شده را به هدف ارسال می کند.
خطمشیها میتوانند متغیرهای درخواست را بررسی کنند، سپس درخواست را بر اساس محتوای آن متغیرها تبدیل یا رد کنند. سیاست ها با تنظیم متغیرهای مناسب، به عنوان مثال متغیرهای متناظر با سرصفحه های درخواست، درخواست را تغییر می دهند.
دسترسی به پیام های پاسخ
با استفاده از متغیرهایی که برای پیام پاسخ اعمال می شود، سیاست ها ممکن است به اجزای پیام از جمله سربرگ، پارامترهای پرس و جو، و پارامترهای فرم، آدرس IP منبع، بدنه پیام HTTP و غیره دسترسی داشته باشند.
پروکسی یک پیام پاسخ را دریافت میکند، سپس مجموعهای از خطمشیها را بر اساس شرایط ارزیابی شده روی پاسخ، اعمال میکند که میتواند پاسخ را تغییر داده یا تغییر دهد.
سیاست ها می توانند متغیرهای پاسخ را بررسی کنند، سپس درخواست را بر اساس محتوای آن متغیرها تغییر دهند یا رد کنند. سیاست ها با تنظیم متغیرهای مناسب، به عنوان مثال متغیرهای متناظر با سرصفحه های پاسخ، پاسخ را تغییر می دهند.
سیاست های مشترک برای دسترسی به متغیرهای جریان
Edge چندین خط مشی را تعریف می کند که می توانید از آنها برای پردازش داده های درخواست و پاسخ استفاده کنید. این سیاست ها عبارتند از:
- خطمشی AssignMessage : پیامهای درخواست یا پاسخ HTTP را در طول یک جریان پروکسی API ایجاد یا تغییر میدهد. همچنین متغیرهای جریان جدیدی را ایجاد و پر می کند.
- خط مشی ExtractVariables : استخراج محتوا از پیام ها، از جمله سرصفحه ها، مسیرهای URI، بارهای پرداخت و پارامترهای پرس و جو، برای استفاده در یک عبارت شرط. سپس این خطمشی یک الگوی متنی را برای محتوای پیام اعمال میکند و پس از یافتن مطابقت، یک متغیر تعیینشده تعیین میکند.
- خطمشی JSONtoXML و خطمشی XMLtoJSON : پیامها را از علامتگذاری شی جاوا اسکریپت (JSON) به فرمت زبان نشانهگذاری قابل توسعه (XML) یا برعکس تبدیل میکند.
- خط مشی JavaCallout ، خط مشی جاوا اسکریپت ، خط مشی پایتون اسکریپت ، خط مشی RegularExpressionProtection : این خط مشی ها به شما امکان می دهند اسکریپتی بنویسید تا به متغیرهای جریان حاوی داده های درخواست و پاسخ دسترسی داشته باشید.