أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
عند تقديم طلب إلى خادم وكيل لواجهة برمجة التطبيقات، يمكنك تمرير أي من المعلومات التالية أو جميعها: بناءً على طريقة ضبط الخادم الوكيل لواجهة برمجة التطبيقات:
- عناوين الطلبات
- معلمات طلب البحث
- بيانات النموذج
- الحمولات الأساسية بتنسيق XML أو JSON
- معرّفات الموارد المنتظمة (URI) للموارد
يتم تلقائيًا تمرير جميع البيانات في الطلب بدون تغيير من ProxyEndpoint إلى نقطة النهاية المستهدفة. لذلك، عندما ترسل TargetEndpoint الطلب إلى خادم الخلفية، يتم تمرير المعلومات من الطلب الأصلي إلى خدمة الخلفية.
وينطبق ذلك أيضًا على الاستجابة التي يتلقّاها Edge من خدمة الخلفية. بشكل تلقائي، يتم تمرير البيانات الواردة في الرد بدون تغيير إلى التطبيق الذي أنشأ طلبك.
كيف يتم تمرير بيانات الطلب إلى الخلفية؟ الخادم؟
تعرض الصورة التالية تعريفًا للخادم الوكيل لواجهة برمجة التطبيقات:
بالنسبة إلى الخادم الوكيل لواجهة برمجة التطبيقات هذا:
- المضيف الافتراضي للخادم الوكيل لواجهة برمجة التطبيقات: "تلقائي"
- النطاق المحدد بواسطة المضيف الظاهري: "http://myOrg-prod.apigee.net"
- المسار الأساسي للخادم الوكيل: "/v1/weather"
- نقطة النهاية المستهدفة التي تم تحديدها من خلال قاعدة المسار: "تلقائي"
- عنوان URL المستهدف: "http://weather.yahooapis.com"
يرسل أحد التطبيقات العميلة طلب GET
إلى الخادم الوكيل لواجهة برمجة التطبيقات باستخدام ما يلي:
الأمر curl
:
curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282
لاحظ أن هذا الطلب يحتوي على مورد "التوقعات" ومعلمة طلب بحث واحدة،
w
يحلل Edge الطلب على أنه
كما هو موضح أدناه ويعين أجزاءً من طلب لمتغيرات التدفق:
{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}
يتم ضبط متغيّرات التدفق بالقيم التالية:
request.verb
: "GET"proxy.basepath
: " /v1/weather"proxy.pathsuffix
: "التنبؤات"request.querystring
: "w=12797282"
ثم تقدم TargetEndpoint طلبًا إلى خدمة الخلفية باستخدام معلومات من الطلب:
{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}
لاحظ كيف يتم تلقائيًا تضمين مَعلمات المورد وطلب البحث المحدّدة في الطلب. في الطلب إلى خادم الخلفية. من تعريف TargetEndpoint، فإن الطلب على النحو التالي:
curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282
مثل مَعلمات طلب البحث، أيّ عناوين أو مَعلمات نماذج تُدرجها في الطلب إلى واجهة برمجة التطبيقات يتم تمرير الخادم الوكيل إلى خادم الخلفية. على سبيل المثال، تقدم الطلب أدناه والذي يتضمن عنوان:
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
في كلا المثالين، يتم تمرير العناوين وبيانات النموذج بدون تغيير إلى خدمة الخلفية. تشير رسالة الأشكال البيانية
يتم تمثيل العناوين بمتغيرات التدفق مثل request.headers.count
request.headers.names
يتم تمثيل بيانات النموذج بمتغيرات التدفق مثل
"request.formparam.count
" وrequest.formparam.names
"
كيف يتم عرض بيانات الرد؟
يتم تلقائيًا تمرير جميع البيانات التي تتلقّاها Edge من خدمة الخلفية في الاستجابة لم يتم إجراء أي تغييرات على التطبيق الذي أنشأ الطلب. كما هو موضح أعلاه للطلب، قد لا تكون البيانات يمكن الوصول إليها في الاستجابة من خلال متغيرات التدفق على Edge. لمزيد من المعلومات يُرجى الاطّلاع على مرجع متغيّرات التدفق.
الوصول إلى بيانات الطلب والاستجابة في خادم وكيل لواجهة برمجة التطبيقات
هناك العديد من المرات التي تريد فيها تعديل بيانات الطلب قبل إرسالها إلى الواجهة الخلفية الخادم. على سبيل المثال:
- لإزالة معلومات الأمان التي يستخدمها Edge للتحقّق من صحة الطلبات. هذه المعلومات ليست المطلوبة من قبل خدمة الخلفية.
- لإضافة البيانات المُرسَلة إلى خدمة الخلفية، مثل تتبُّع المستخدمين أو جمع "إحصاءات YouTube".
- معالجة الطلب بشكل مشروط استنادًا إلى بيانات الطلب على سبيل المثال، يمكن للخادم الوكيل لواجهة برمجة التطبيقات تحتوي على العديد من نقاط النهاية المستهدفة. يتم تحديد TargetEndpoint الذي يستخدمه الطلب حسب الطلب. البيانات. وبعد ذلك، تتم إزالة تلك البيانات من الطلب قبل إرسالها إلى خدمة الخلفية.
وينطبق الشيء نفسه على البيانات الواردة في الإجابة. وكجزء من معالجة الاستجابة، يمكن لخادم وكيل واجهة برمجة التطبيقات تعديل البيانات قبل إعادتها إلى التطبيق صاحبها.
الوصول إلى رسائل الطلبات
يمكنك استخدام السياسات للوصول إلى أجزاء من رسالة الطلب وتغييرها. وتشمل هذه الأجزاء ما يلي:
- العناوين
- معامِلات طلب البحث
- معلمات النموذج
- عنوان IP المصدر
- نص رسالة HTTP
وفي التدفق الطبيعي، بعد معالجة الطلب، يرسل الخادم الوكيل البيانات الوصول إلى الهدف.
يمكن للسياسات فحص متغيرات الطلب، ثم تحويل الطلب أو رفضه استنادًا إلى محتوى هذه المتغيرات. تعمل السياسات على تحويل الطلب من خلال تعيين المتغيرات المناسبة على سبيل المثال المتغيرات المقابلة لعناوين الطلبات.
الوصول إلى رسائل الرد
باستخدام المتغيرات التي تنطبق على رسالة الرد، يمكن للسياسات الوصول إلى مكونات الرسالة بما في ذلك العنوان ومعلَمات طلب البحث ومعلَمات النموذج وعنوان IP المصدر وبروتوكول HTTP ونص الرسالة وما إلى ذلك.
يتلقى الخادم الوكيل رسالة رد، ثم يطبّق عليه سلسلة من السياسات، استنادًا إلى الشروط التي يتم تقييمها على الاستجابة، ما قد يؤدي إلى تعديل الاستجابة أو تحويلها.
يمكن للسياسات فحص متغيرات الاستجابة، ثم تحويل الطلب أو رفضه استنادًا إلى محتوى هذه المتغيرات. تعمل السياسات على تحويل الاستجابة عن طريق تعيين المتغيرات المناسبة على سبيل المثال المتغيرات المقابلة لعناوين الاستجابة.
السياسات الشائعة للوصول إلى متغيرات التدفق
تحدِّد شبكة Edge العديد من السياسات التي يمكنك استخدامها لمعالجة بيانات الطلب والاستجابة. هذه تشمل السياسات ما يلي:
- سياسة AssignMessage: تنشئ هذه السياسة أو تعدِّل رسائل الاستجابة أو طلبات HTTP أثناء استخدام الخادم الوكيل لواجهة برمجة التطبيقات. التدفق. تنشئ أيضًا متغيرات تدفق جديدة وتعبئتها.
- سياسة استخراج المتغيّرات: يمكنك استخراج المحتوى من الرسائل، بما في ذلك العناوين ومسارات معرّفات الموارد المنتظمة (URI) والحمولات معلمات طلب البحث، لاستخدامها في عبارة شرط. تطبِّق السياسة بعد ذلك نمط نص على عند العثور على تطابق يضبط متغيرًا معيَّنًا.
- سياسة JSONtoXML وسياسة XMLtoJSON: تحوِّل الرسائل من JavaScript Object Notation (JSON) إلى لغة الترميز القابلة للامتداد. (XML) أو العكس.
- سياسة JavaCallout وسياسة JavaScript وسياسة PythonScript سياسة حماية الحقوق العادية: تتيح لك هذه السياسات كتابة نص برمجي للوصول إلى متغيرات التدفق. التي تحتوي على بيانات الطلب والاستجابة.