أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المزايا
تستخرج سياسة RecoveryVariables المحتوى من طلب أو استجابة وتحدّد قيمة متغير لذلك المحتوى. يمكنك استخراج أي جزء من الرسالة، بما في ذلك العناوين ومسارات معرّف الموارد المنتظم (URI) وحمولات JSON/XML ونموذج ومعلمات طلب البحث. تعمل السياسة من خلال تطبيق نمط نصي على الرسالة المحتوى، وعند العثور على تطابق، يتم تعيين متغير بمحتوى الرسالة المحدد.
وعلى الرغم من أنّك تستخدم هذه السياسة عادةً لاستخراج المعلومات من طلب أو رسالة ردّ، يمكنك يمكنك أيضًا استخدامها لاستخراج معلومات من مصادر أخرى، بما في ذلك الكيانات التي أنشأها سياسة AccessEntity، كائنات XML أو كائنات JSON.
وبعد استخراج محتوى الرسالة المحدّد، يمكنك الإشارة إلى المتغيّر في السياسات كجزء من معالجة الطلب والاستجابة.
الفيديوهات
لمعرفة مزيد من المعلومات حول سياسة استخراج المتغيّرات، يمكنك مشاهدة الفيديوهات التالية.
فيديو | الوصف |
---|---|
استخراج المتغيّرات من حمولة XML | يمكنك استخراج المتغيّرات من حمولة XML باستخدام سياسة استخراج متغيّر. |
استخراج المتغيّرات من حمولة JSON | يمكنك استخراج المتغيّرات من حمولة JSON باستخدام سياسة استخراج متغيّر. |
استخراج المتغيّرات من المَعلمات | يمكنك استخراج المتغيّرات من مَعلمات، مثل مَعلمات طلب البحث أو العنوان أو النموذج أو معرّف الموارد المنتظم (URI). |
استخراج المتغيّرات من المَعلمات المتعدّدة القيم | يمكنك استخراج المتغيّرات من المَعلمات المتعدّدة القيم. |
استخراج المتغيّرات من مَعلمة طلب البحث (Classic Edge) | يمكنك استخراج المتغيرات من معلَمة طلب بحث باستخدام واجهة مستخدم Edge الكلاسيكي. |
استخراج المتغيّرات من الحمولة بتنسيق XML أو JSON (الإصدار الكلاسيكي Edge) | يمكنك استخراج المتغيّرات من حمولة XML أو JSON باستخدام واجهة مستخدم Classic Edge. |
نماذج
توضح نماذج التعليمات البرمجية للسياسة هذه كيفية استخراج المتغيرات من أنواع الأدوات:
GitHub
تشير هذه الروابط إلى عيّنات الخادم الوكيل لواجهة برمجة التطبيقات التي يمكنك نشرها وتشغيلها على Edge. هم تستخدم استخراج المتغيّرات وتقع في مستودع نماذج واجهة برمجة التطبيقات في Apigee على GitHub. تشرح المخططات README كيفية استخدام متغيرات الاستخراج في كل حالة وكيفية نشر متغيرات لتشغيل كل عينة.
- استخراج وتعيين عيّنة للمتغيّرات (استخراج البيانات من رسائل JSON وXML)
- الوصول نموذج للكيان
- التقسيم على صفحات والتخزين المؤقت
- إعادة التوجيه نموذج عنوان URL مستهدف
- عيّنة من تركيبة من تركيبة السياسة
معرّفات الموارد المنتظمة (URI)
<ExtractVariables name="ExtractVariables-1"> <DisplayName>Extract a portion of the url path</DisplayName> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/accounts/{id}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
يمكنك الاطّلاع على نموذج رمز السياسة أعلاه. يخبر العنصر <URIPath>
سياسة OutputVariables لاستخراج المعلومات من مسار معرّف الموارد المنتظم (URI). تشير رسالة الأشكال البيانية
يحدّد العنصر <Pattern>
النمط المراد تطبيقه على مسار معرّف الموارد المنتظم (URI). تشير رسالة الأشكال البيانية
يتم التعامل مع النمط كقالب بسيط، حيث تشير الأقواس المتعرجة إلى الجزء المتنوع
لمسار معرّف الموارد المنتظم (URI).
يتم تحديد اسم المتغير المراد تعيينه من خلال القيمة المحددة في
العنصر <VariablePrefix>
، بالإضافة إلى القيمة المضمَّنة بين أقواس متعرجة {}
في العنصر <Pattern>
. يتم ربط القيمتين بنقطة متداخلة،
وينتج عن ذلك اسم متغير urirequest.id
على سبيل المثال. إذا لم تكن هناك
<VariablePrefix>
، فإن اسم المتغير هو القيمة فقط
محاطة بأقواس معقوفة.
يمكنك مراعاة نموذج رمز السياسة أعلاه عند استخدام الطلب الوارد التالي:
GET http://org1-test.apigee.net/svc1/accounts/12797282
لنفترض أنّ المسار الأساسي للخادم الوكيل لواجهة برمجة التطبيقات هو /svc1
. عندما تطبّق Apigee Edge
رمز سياسة snippetVariables أعلاه على هذا الطلب الوارد، ويحدّد المتغير
urirequest.id
إلى 12797282
بعد تنفيذ Apigee Edge للسياسة،
يمكن أن تشير السياسات أو التعليمة البرمجية اللاحقة في تدفق المعالجة إلى المتغير المسمى
urirequest.id
للحصول على قيمة السلسلة 12797282
.
على سبيل المثال، تشتمل سياسة AssignMessage التالية على قيمة ذلك المتغير في العنصر حمولة رسالة طلب جديدة:
<AssignMessage async="false" continueOnError="false" enabled="true" name="AssignPayload"> <DisplayName>AssignPayload</DisplayName> <Set> <Payload contentType="text/xml"> <IdExtractedFromURI>{urirequest.id}</IdExtractedFromURI> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">newRequest</AssignTo> </AssignMessage>
معلمات طلب البحث
<ExtractVariables name="ExtractVariables-2"> <DisplayName>Extract a value from a query parameter</DisplayName> <Source>request</Source> <QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam> <VariablePrefix>queryinfo</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
يمكنك مراعاة نموذج رمز السياسة أعلاه عند استخدام الطلب الوارد التالي:
GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271
عندما تطبِّق Apigee Edge رمز سياسة PermissionVariables أعلاه على هذا الطلب الوارد،
تُعيِّن المتغير queryinfo.dbncode
على 88271
. بعد Apigee Edge
تنفيذ السياسة، يمكن أن تشير السياسات أو الرمز اللاحق في عملية المعالجة إلى
متغيّر باسم queryinfo.dbncode
للحصول على قيمة السلسلة 88271
.
يمكنك الآن الوصول إلى المتغير queryinfo.dbncode
في الخادم الوكيل.
على سبيل المثال، تنسخ سياسة AssignMessage التالية هذه الرسالة إلى حمولة الطلب:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetQP</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractQP>{queryinfo.dbncode}</ExtractQP> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
معلمات متعددة
<ExtractVariables name="ExtractVariables-2"> <DisplayName>Extract a value from a query parameter</DisplayName> <Source>request</Source> <QueryParam name="w"> <Pattern ignoreCase="true">{firstWeather}</Pattern> </QueryParam> <QueryParam name="w.2"> <Pattern ignoreCase="true">{secondWeather}</Pattern> </QueryParam> <VariablePrefix>queryinfo</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
لنفترض أنّ تصميم واجهة برمجة التطبيقات يتيح لك تحديد معلَمات طلب بحث متعددة باستخدام الاسم. يمكنك استخدام هذه السياسة لاستخراج قيمة المثيلات المتعددة لطلب البحث المعلمة "w". للإشارة إلى معلَمات طلب البحث هذه في سياسة استخراج المتغيّرات، يمكنك استخدام الفهارس، حيث لا يحتوي المثيل الأول لمعلمة طلب البحث على أي فهرس، ويكون المثيل الثاني في الفهرس 2 والثالث في الفهرس 3، إلخ.
يمكنك مراعاة نموذج رمز السياسة أعلاه عند استخدام الطلب الوارد التالي:
GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago
عندما تطبِّق Apigee Edge رمز سياسة PermissionVariables أعلاه على هذا الطلب الوارد،
تعيِّن المتغير queryinfo.firstWeather
على Boston
المتغير من queryInfo.secondWeather
إلى Chicago
.
يمكنك الآن الوصول إلى المتغير queryinfo.firstWeather
queryinfo.secondWeather في
الخادم الوكيل. على سبيل المثال، تنسخ سياسة AssignMessage التالية هذه الرسالة إلى حمولة بيانات
الطلب:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetQP</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractQP1>{queryinfo.firstWeather}</ExtractQP1> <ExtractQP2>{queryinfo.secondWeather}</ExtractQP2> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
العناوين
<ExtractVariables name='ExtractVariable-OauthToken'> <Source>request</Source> <Header name="Authorization"> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header> <VariablePrefix>clientrequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
لنفترض أنّ واجهة برمجة التطبيقات تستخدم رموز الحامل المميزة للإصدار 2.0 من OAuth. يمكنك الاطّلاع على نموذج رمز السياسة المذكور أعلاه.
العمل مع طلب يتضمن رمز OAuth المميز للإصدار 2.0 والذي يتضمن عنوانًا مثل هذا:
Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.
وبصفتك مصمم واجهة برمجة التطبيقات، لنفترض أنك تريد استخدام قيمة الرمز المميز (ولكن ليس القيمة ) كمفتاح في البحث في ذاكرة التخزين المؤقت. يمكنك استخدام رمز سياسة OutputVariables أعلاه لاستخراج الرمز المميز.
عندما تطبّق Apigee Edge رمز سياسة PermissionVariables أعلاه على هذا العنوان، ستنفّذ
ضبط المتغير clientrequest.oauthtoken
على
TU08xptfFfeM7aS0xHqlxTgEAdAM
يمكنك الآن الوصول إلى المتغير clientrequest.oauthtoken
في
الخادم الوكيل. على سبيل المثال، تنسخ سياسة AssignMessage التالية هذه الرسالة إلى حمولة بيانات
الطلب:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetHeader</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractHeader>{clientrequest.oauthtoken}</ExtractHeader> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
JSON
<ExtractVariables name="ExtractVariables-3"> <Source>response</Source> <JSONPayload> <Variable name="latitude" type="float"> <JSONPath>$.results[0].geometry.location.lat</JSONPath> </Variable> <Variable name="longitude" type="float"> <JSONPath>$.results[0].geometry.location.lng</JSONPath> </Variable> </JSONPayload> <VariablePrefix>geocoderesponse</VariablePrefix> </ExtractVariables>
<JSONPayload>
$
ضَع في اعتبارك حمولة استجابة JSON التالية:
{ "results": [{ "geometry": { "location": { "lat": 37.42291810, "lng": -122.08542120 }, "location_type": "ROOFTOP", "viewport": { "northeast": { "lat": 37.42426708029149, "lng": -122.0840722197085 }, "southwest": { "lat": 37.42156911970850, "lng": -122.0867701802915 } } } }] }
عندما تطبِّق Apigee Edge رمز سياسة OutputVariables أعلاه على رسالة JSON هذه،
تحدد متغيرين: geocoderesponse.latitude
geocoderesponse.longitude
يستخدم كلا المتغيرين نفس بادئة المتغير
geocoderesponse
ويتمّ تحديد لاحقة هذه المتغيّرات صراحةً من خلال
السمة name
للعنصر <Variable>
.
يحصل المتغير geocoderesponse.latitude
على القيمة
37.42291810
يحصل المتغير geocoderesponse.longitude
على القيمة
-122.08542120
يمكنك الآن الوصول إلى المتغير geocoderesponse.latitude
في
الخادم الوكيل. على سبيل المثال، تنسخ سياسة assignMessage التالية إلى رأس باسم "خط العرض".
في الرد:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetJSONVar</DisplayName> <Add> <Headers> <Header name="latitude">{geocoderesponse.latitude}</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
XML
<ExtractVariables name="ExtractVariables-4"> <Source>response</Source> <XMLPayload> <Namespaces> <Namespace prefix="dir">urn:43BFF88D-D204-4427-B6BA-140AF393142F</Namespace> </Namespaces> <Variable name="travelmode" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/@mode</XPath> </Variable> <Variable name="duration" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:value</XPath> </Variable> <Variable name="timeunit" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:text</XPath> </Variable> </XMLPayload> <VariablePrefix>directionsresponse</VariablePrefix> </ExtractVariables>
<XMLPayload>
يُرجى مراعاة حمولة استجابة XML التالية:
<Directions xmlns="urn:43BFF88D-D204-4427-B6BA-140AF393142F"> <status>OK</status> <route> <summary>I-40 W</summary> <leg> <step mode="DRIVING"> <start_location> <lat>41.8507300</lat> <lng>-87.6512600</lng> </start_location> <end_location> <lat>41.8525800</lat> <lng>-87.6514100</lng> </end_location> <duration> <value>19</value> <text>minutes</text> </duration> </step> </leg> </route> </Directions>
عندما تطبّق Apigee Edge رمز سياسة PermissionVariables أعلاه على رسالة XML، فإنها لا تعمل
تحدّد ثلاثة متغيّرات: directionsresponse.travelmode,
directionsresponse.duration
وdirectionsresponse.timeunit
الكل
تستخدم المتغيرات نفس بادئة المتغير directionsresponse
. لاحقة
يتم تحديد هذه المتغيرات بشكل صريح من خلال واجهة برمجة تطبيقات العنصر <Variable>
السمة name
.
يحصل المتغير directionsresponse.travelmode
على القيمة
DRIVING
يحصل المتغير directionsresponse.duration
على القيمة
19
يحصل المتغير directionsresponse.timeunit
على القيمة
minutes
يمكنك الآن الوصول إلى المتغير directionresponse.travelmode
في
الخادم الوكيل. على سبيل المثال، تنسخ سياسة assignMessage التالية إلى رأس باسم.
"tmode" في الرد:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetXMLVar</DisplayName> <Add> <Headers> <Header name="tmode">{directionsresponse.travelmode}</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
لمحة عن سياسة استخراج المتغيّرات
ينشئ مطورو واجهة برمجة التطبيقات خوادم وكيلة لواجهة برمجة التطبيقات تتصرف بشكل مختلف حسب محتوى الرسائل، بما في ذلك العناوين ومسارات معرّف الموارد المنتظم (URI) والحمولات ومَعلمات طلب البحث. غالبًا ما يستخرج الخادم الوكيل بعض من هذا المحتوى للاستخدام في بيان شرط. يمكنك استخدام سياسة استخراج المتغيّرات لتنفيذ هذا.
عند تحديد سياسة استخراج المتغيّرات، يمكنك اختيار ما يلي:
- أسماء المتغيّرات المُراد ضبطها
- مصدر المتغيّرات
- عدد المتغيّرات المطلوب استخراجها وضبطها
وعند تنفيذها، تطبّق السياسة نمطًا نصيًا على المحتوى، وتضبط عند العثور على تطابق قيمة المتغير المعين مع المحتوى. حينئذ يمكن أن تستهلك السياسات والرموز الأخرى هذه المتغيرات لتفعيل السلوك الديناميكي أو إرسال بيانات النشاط التجاري إلى Edge API Analytics.
لمعرفة كيفية استخدام المتغيّرات القابلة للاستخراج لإنشاء تقارير "إحصاءات Google" المستندة إلى المحتوى، يُرجى مراجعة التحليل محتوى رسائل واجهة برمجة التطبيقات باستخدام إحصاءات مخصّصة
النطاق
إنّ المتغيرات التي يتم إعدادها باستخدام سياسة PermissionVariables لها نطاق عالمي. أي، بعد تُحدِّد سياسة OutputVariables متغيّرًا جديدًا، ويمكنك الوصول إلى ذلك المتغيّر من أي سياسة أو الرمز البرمجي في أي مرحلة من مراحل التدفق (يتم تنفيذه بعد سياسة استخراج المتغيّرات). هذا النمط تتضمن ما يلي:
- PreFlow: ProxyEndpoint وTargetEndpoint (الطلب والردّ)
- PostFlow: ProxyEndpoint وTargetEndpoint (الطلب والردّ)
- PostClientFlow: ProxyEndpoint (الرد فقط، باستخدام سياسة تسجيل الرسائل)
- مسارات الأخطاء
لمحة عن المطابقة وإنشاء المتغيّرات
تستخرج سياسة OutputVariables المعلومات من طلب أو ردّ وتكتب ما يلي: المعلومات إلى متغير. لكل نوع من المعلومات التي يمكنك استخراجها، مثل مسار URI أو XML، يمكنك تحديد النمط الذي ترغب في مطابقته واسم المتغير المستخدم للاحتفاظ المعلومات المستخرجة.
ومع ذلك، تعتمد الطريقة التي تعمل بها مطابقة الأنماط على مصدر الاستخراج. ما يلي: الفئتين الأساسيتين من المعلومات التي يمكنك استخراجها
مطابقة مسارات معرّف الموارد المنتظم (URI) ومَعلمات طلب البحث والعناوين ومَعلمات النماذج والمتغيّرات
عند استخراج معلومات من مسار عنوان URI، فإن معلمات طلب البحث والعناوين ومعلمات النموذج المتغيرات التي تستخدم علامة <Pattern> بها لتحديد واحد أو أكثر الأنماط لمطابقتها. على سبيل المثال، يعرض المثال التالي على السياسة نمطًا مطابقًا واحدًا مسار URI:
<ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
في هذا المثال، يتم ضبط المتغيّر urirequest.pathSeg على أي شيء يظهر في publisher.pathsuffix بعد "/a/". على سبيل المثال، افترض أن المسار الأساسي الخادم الوكيل لواجهة برمجة التطبيقات هو /basepath/v1 . مع طلب وارد إلى http://myCo.com/basepath/v1/a/b يتم تعيين المتغير على "b".
تحديد أنماط متعددة
يمكنك تحديد عدة أحرف لمطابقتها، بما يتوافق مع علامات <Pattern>، حيث:
- ويتم اختبار جميع الأنماط للتأكّد من ملاءمتها.
- وفي حال عدم تطابُق أي من الأنماط، لن تفعل السياسة أي شيء ولن تكون المتغيرات إنشاء.
- إذا تطابق أكثر من نمط واحد، يتم استخدام النمط الذي يحتوي على أطول مقاطع مسار لاستخراجه.
- إذا كان لنمطين متطابقين نفس مقاطع المسار الأطول، فإن النمط المحدد أولاً في أن يتم استخدام السياسة للاستخراج
في المثال التالي، يمكنك إنشاء سياسة تحتوي على ثلاثة أنماط مطابقة لمعرف الموارد المنتظم (URI) المسار:
<ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern> <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
افترض، بالنسبة إلى خادم وكيل لواجهة برمجة التطبيقات مع مسار أساسي /basepath/v1، يتضمن عنوان URL للطلب الوارد إلى الخادم الوكيل لواجهة برمجة التطبيقات بهذا النموذج:
http://myCo.com/basepath/v1/a/b
في هذا المثال، يتطابق النمط الأول مع معرّف الموارد المنتظم (URI) والمتغير urirequest.pathSeg هو مضبوط على "b".
إذا كان عنوان URL للطلب:
http://myCo.com/basepath/v1/a/b/c/d
...فعندئذ يتطابق النمط الثالث ويكون المتغير urirequest.pathSeg تم تعيينها على "d".
تحديد الأنماط بمتغيرات متعددة
ويمكنك تحديد متغيّرات متعددة في النمط المطابق. على سبيل المثال، يمكنك تحديد نمط مطابق مع متغيرين:
<ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern> <Pattern ignoreCase="true">/a/{pathSeg1}/c/{pathSeg2}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
افتراض أنّ هناك خادم وكيل لواجهة برمجة التطبيقات مع المسار الأساسي /basepath/v1، للطلب الوارد عنوان URL:
http://myCo.com/basepath/v1/a/b/c/d
...يكون المتغير urirequest.pathSeg1 الضبط على "b" والمتغير urirequest.pathSeg2 هو تم تعيينها على "d".
جارٍ مطابقة نُسخ متعددة في النمط
يمكنك أيضًا مطابقة الأنماط عندما تكون هناك مثيلات متعددة لعنصر يحمل الاسم نفسه. على سبيل المثال، يمكنك إنشاء طلب يحتوي على معلَمات طلب بحث متعددة أو عناوين متعددة. بالاسم ذاته. يحتوي الطلب التالي على مَعلمتَي طلب بحث باسم "w":
http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2
للإشارة إلى معلَمات طلب البحث هذه في سياسة استخراج المتغيّرات، يمكنك استخدام الفهارس، حيث يشير لا يحتوي المثيل الأول لمعلمة طلب البحث على أي فهرس، والثاني في الفهرس 2، والثالث في الفهرس 3 وما إلى ذلك. على سبيل المثال، تستخرج السياسة التالية قيمة معلَمة طلب البحث الثانية باسم "w" في الطلب:
<ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <QueryParam name="w.2"> <Pattern ignoreCase="true">{secondW}</Pattern> </QueryParam> <VariablePrefix>urirequest</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
المتغير urirequest.secondW هو تم تعيينها على "2". إذا تم حذف معلَمة طلب البحث الثانية من الطلب، يتم تغيير المتغير urirequest.secondW فارغ. استخدِم الفهرسة في أي وقت يتضمّن الطلب عدة عناصر تحمل الاسم نفسه.
استخدام رموز خاصة في النمط
عند مطابقة مسارات معرف الموارد المنتظم (URI)، يمكنك استخدام الرمز "*" و"**" أحرف البدل في النمط، حيث:
- "*" تتطابق مع أي جزء من المسار
- "**" تتطابق مع أجزاء متعددة من المسار
على سبيل المثال، يمكنك تحديد أنماط للعنصر <URIPath> كما هو موضَّح. أدناه:
<URIPath> <Pattern ignoreCase="true">/a/*/{id}</Pattern> <Pattern ignoreCase="true">/a/**/{id}</Pattern> </URIPath>
يتطابق النمط الأول مع الطلبات ذات المسارات (الجزء من مسار URI الذي يلي المسار الأساسي) مثل "/a/b/c" و"/a/foo/bar" وما إلى ذلك. ويتطابق النمط الثاني مع أي عدد من المسارات المقاطع بعد "/a/"، مثل "/a/foo/bar/baz/c" وكذلك "/a/b/c" و"/a/foo/bar".
عند تحديد أنماط لمعلمات طلب البحث والعناوين ومعلمات النموذج، يمكن للحرف "*" لمطابقة أي عدد من الأحرف. على سبيل المثال، عند مطابقة عنوان، حدد النمط على النحو التالي:
*;charset={encoding}
يتطابق هذا النمط مع القيم "text/xml;charset=UTF-16" أو "application/xml;charset=ASCII".
إذا كانت القيمة التي تم تمريرها إلى سياسة PermissionVariables تحتوي على حرف خاص، مثل "{"، استخدِم علامة "%" شخصية للهروب منها. يتخطى المثال التالي "{" و "}" الأحرف في النمط لأنها تُستخدم كأحرف حرفية في قيمة الاستعلام :
<QueryParam> <Pattern ignoreCase="true">%{user%} {name}</Pattern> </QueryParam>
في هذا المثال، يتطابق النمط مع القيمة "{user} سيف" ولكن ليس قيمة "المستخدم ستيف".
تنسيق JSON وXML متطابقان
عند استخراج البيانات من JSON وXML، يمكنك تحديد علامة <Variable> واحدة أو أكثر في السياسة. تحدد العلامة <Variable> اسم متغير الوجهة حيث يتم تخزين المعلومات المستخرجة، وحقل JsonPath (JSON) أو XPATH (XML) إلى المعلومات المستخرجة.
جميع علامات <Variable> في السياسة بحيث يمكنك تعبئة متغيرات متعددة من سياسة واحدة. في حال حذف فإن العلامة <Variable> لا إلى حقل صالح في JSON أو XML، فلن يكون المتغير المتجاوب إنشاء.
يوضح المثال التالي سياسة استخراج المتغيّرات التي تملأ متغيّرَين من نص استجابة JSON:
<ExtractVariables name="ExtractVariables-3"> <Source>response</Source> <JSONPayload> <Variable name="latitude" type="float"> <JSONPath>$.results[0].geometry.location.lat</JSONPath> </Variable> <Variable name="longitude" type="float"> <JSONPath>$.results[0].geometry.location.lng</JSONPath> </Variable> </JSONPayload> <VariablePrefix>geocoderesponse</VariablePrefix> </ExtractVariables>
الكتابة إلى نفس المتغير في عدة أماكن
انتبه عند اختيار أسماء المتغيرات المطلوب ضبطها. يتم تنفيذ السياسة بشكل تسلسلي من نمط الاستخراج الأول إلى الأخير. وإذا كتبت السياسة قيمة للمتغير نفسه من أماكن متعددة، فإن آخر عملية كتابة في السياسة تحدد قيمة المتغير. (قد تكون هذه ما تريد.)
على سبيل المثال، تريد استخراج قيمة رمز مميّز يمكن ضبطها في مَعلمة طلب بحث. أو في أحد العناوين، كما هو موضّح أدناه:
<!-- If token only in query param, the query param determines the value. If token is found in both the query param and header, header sets value. --> <QueryParam name="token"> <Pattern ignoreCase="true">{tokenValue}</Pattern> </QueryParam> <!-- Overwrite tokenValue even if it was found in query parameter. --> <Header name="Token"> <Pattern ignoreCase="true">{tokenValue}</Pattern> </Header>
التحكم في ما يحدث في حال عدم حدوث أي تطابق
إذا لم يتطابق النمط، فلن يتم إنشاء المتغير المتجاوب. لذلك، إذا فإن سياسة أخرى تشير إلى المتغير، فيمكن أن يتسبب ذلك في حدوث خطأ.
أحد الخيارات هي ضبط <IgnoreUnresolvedVariables>
على
true في سياسة تشير إلى المتغير لضبط السياسة لمعالجة
أي متغير غير قابل للتحليل كسلسلة فارغة (فارغ):
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
مرجع العنصر
يصف مرجع العنصر عناصر استخراجات Variables وسماتها .
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables 1</DisplayName> <Source clearPayload="true|false">request</Source> <VariablePrefix>myprefix</VariablePrefix> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> </URIPath> <QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam> <Header name="Authorization"> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header> <FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam> <Variable name="request.content"> <Pattern>hello {user}</Pattern> </Variable> <JSONPayload> <Variable name="name"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable> </XMLPayload> </ExtractVariables>
<ExtractVariables> السمات
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
يصف الجدول التالي السمات المشتركة بين جميع العناصر الرئيسية للسياسة:
السمة | الوصف | تلقائي | التواجد في المنزل |
---|---|---|---|
name |
الاسم الداخلي للسياسة. يمكن لقيمة السمة يمكنك، إذا أردت، استخدام العنصر |
لا ينطبق | مطلوب |
continueOnError |
اضبط القيمة على يمكنك ضبط القيمة على |
خطأ | اختياري |
enabled |
اضبط القيمة على اضبط القيمة على |
صحيح | اختياري |
async |
تم إيقاف هذه السمة نهائيًا. |
خطأ | منهي العمل به |
<DisplayName> عنصر
استخدِمه مع السمة name
لتصنيف السياسة في
إدارة خادم وكيل لواجهة المستخدم باسم مختلف بلغة طبيعية.
<DisplayName>Policy Display Name</DisplayName>
تلقائي |
لا ينطبق إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة |
---|---|
التواجد في المنزل | اختياري |
النوع | سلسلة |
<Source> عنصر
(اختياري) تحدِّد هذه السياسة المتغيّر المطلوب تحليله. قيمة
يتم ضبط <Source>
تلقائيًا على message
. قيمة message
حساسة للسياق. خلال عملية الطلب، تتم معالجة message
مع رسالة الطلب. ضِمن
مسار الرد، تتم معالجة message
مع رسالة الرد.
وعلى الرغم من أنّك تستخدم هذه السياسة عادةً لاستخراج المعلومات من طلب أو رسالة ردّ، يمكنك
يمكنك استخدامه لاستخراج المعلومات من أي متغير. على سبيل المثال، يمكنك استخدامها لاستخراج
معلومات من كيان تم إنشاؤه بموجب سياسة AccessEntity، من البيانات
التي تم إرجاعها بواسطة الخدمة
سياسة وسيلة الشرح أو استخراج المعلومات من كائن XML أو JSON.
إذا تعذّر حلّ <Source>
، أو إذا تمت معالجتها إلى نوع غير الرسائل،
وسيتعذّر الرد على السياسة.
<Source clearPayload="true|false">request</Source>
الإعداد التلقائي: | رسالة |
الحضور: | اختياري |
النوع: | سلسلة |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
clearPayload |
اضبط القيمة على true إذا كنت تريد محو حمولة البيانات المحددة في
<Source> بعد استخراج البيانات منها. |
خطأ |
اختياري | منطقي |
<VariablePrefix> عنصر
(اختياري) يتم إنشاء اسم المتغير الكامل من خلال ضم
<VariablePrefix>
ونقطة والاسم الذي تحدّده {أقواس معقوفة} في
العنصر <Pattern>
أو العنصر <Variable>. مثل:
myprefix.id
أو myprefix.dbncode
أو myprefix.oauthtoken.
<VariablePrefix>myprefix</VariablePrefix>
على سبيل المثال، لنفترض أن قيمة الاسم هي "user".
- إذا لم يتم تحديد
<VariablePrefix>
، سيتم جمع القيم المستخرجة. المخصص لمتغير اسمهuser
. - إذا تم تحديد
<VariablePrefix>
كبادئة myprefix، سيتم استخراج يتم تعيين القيم لمتغير يُسمىmyprefix.user
.
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياري |
النوع: | سلسلة |
<IgnoreUnresolvedVariables> عنصر
(اختياري) اضبط القيمة على true
للتعامل مع أي متغيّر غير قابل للتحليل كسلسلة فارغة.
(فارغ). اضبط القيمة على false
إذا كنت تريد أن تعرض السياسة رسالة خطأ عند الإشارة إلى أي منها.
المتغير غير قابل للتحليل.
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
الإعداد التلقائي: | خطأ |
الحضور: | اختياري |
النوع: | منطقي |
وإذا لم يتم حلّ مرجع XPath في <XMLPayload>
، يتم تطبيق السياسة
الخطأ التالي:
{ "fault":{ "faultstring":"Unresolved xpath path in policy policy_name.", "detail":{ "errorcode":"steps.extractvariables.InvalidXPath" } } }
<URIPath> عنصر
(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). لاستخراج قيمة من الوكيل.pathsuffix لرسالة مصدر الطلب. المسار المطبق على يكون النمط هوproxy.pathsuffix، الذي لا يتضمن المسار الأساسي لخادم وكيل واجهة برمجة التطبيقات. في حال حذف يؤدي تحويل رسالة المصدر إلى نوع الرسالة response، وعندئذٍ لا يفعل هذا العنصر أي شيء.
<URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> </URIPath>
ومن الممكن استخدام عناصر <Pattern> متعددة:
<URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> <Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern> </URIPath>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل:
<URIPath> ، <QueryParam> ، <Header> ،
<FormParam> أو <JSONPayload> أو
<XMLPayload>. |
النوع: | لا ينطبق |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
ignoreCase | يُحدد لتجاهل الحالة عند مطابقة الأب. |
خطأ |
اختياري | منطقي |
<QueryParam> عنصر
(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). لاستخراج قيمة من معلَمة طلب البحث المحدّدة لرسالة مصدر request. إذا كانت تتم مطابقة رسالة المصدر إلى نوع الرسالة response، فسيعمل هذا العنصر على لا شيء.
<QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam>
إذا كانت معلَمات طلب بحث متعددة تحمل الاسم نفسه، استخدِم الفهارس للإشارة إلى المَعلمات:
<QueryParam name="w.2"> <Pattern ignoreCase="true">{secondW}</Pattern> </QueryParam>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل:
<URIPath> ، <QueryParam> ، <Header> ،
<FormParam> أو <JSONPayload> أو
<XMLPayload>. |
النوع: | لا ينطبق |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
الاسم | تُستخدَم لتحديد اسم معلَمة طلب البحث. وإذا كانت معلَمات طلب بحث متعددة نفس الاسم، استخدم المراجع المفهرسة، حيث يكون المثيل الأول لمعلمة طلب البحث لا يحتوي على فهرس، والثاني في الفهرس 2، والثالث في الفهرس 3، وهكذا. |
لا ينطبق |
مطلوب | سلسلة |
<Header> عنصر
(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). لاستخراج قيمة من عنوان HTTP المحدّد لرسالة request أو response المحدّدة. إذا كانت العناوين المتعددة تحتوي نفس الاسم، يتم تخزين قيمها في صفيف.
<!-- The name is the actual header name. --> <Header name="Authorization"> <!-- Provide a name for your new custom variable here. --> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header>
إذا كانت هناك عدة عناوين لها الاسم نفسه، يمكنك استخدام الفهارس للإشارة إلى عناوين فردية في الصفيفة:
<Header name="myHeader.2"> <Pattern ignoreCase="true">{secondHeader}</Pattern> </Header>
أو فيما يلي لسرد جميع العناوين في الصفيف:
<Header name="myHeader.values"> <Pattern ignoreCase="true">{myHeaders}</Pattern> </Header>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل:
<URIPath> ، <QueryParam> ، <Header> ،
<FormParam> أو <JSONPayload> أو
<XMLPayload>. |
النوع: | لا ينطبق |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
الاسم | تحدِّد هذه السياسة اسم العنوان الذي يمكنك استخراج القيمة منه. في حال تعدُّد
لها نفس الاسم، استخدم المراجع المفهرسة، حيث يكون المثيل الأول
لا يحتوي الرأس على فهرس، والثاني في الفهرس 2، والثالث في الفهرس 3، وما إلى ذلك.
.values للحصول على جميع العناوين في المصفوفة. |
لا ينطبق |
مطلوب | سلسلة |
<FormParam> عنصر
(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). لاستخراج قيمة
من مَعلمة النموذج المحدّدة لرسالة request أو response المحدّدة. معلمات النموذج
لا يمكن استخراجه إلا عندما يكون عنوان Content-Type
للرسالة المحدّدة هو
application/x-www-form-urlencoded
<FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل:
<URIPath> ، <QueryParam> ، <Header> ،
<FormParam> أو <JSONPayload> أو
<XMLPayload>. |
النوع: | لا ينطبق |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
الاسم | اسم مَعلمة النموذج التي يمكنك استخراج القيمة منها |
لا ينطبق |
مطلوب | سلسلة |
<Variable> عنصر
(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). تحدد اسم المتغير المطلوب استخراج قيمة منه.
<Variable name="myVar"> <Pattern>hello {user}</Pattern> </Variable>
لاستخراج قيمتَين من المتغيّر:
<Variable name="myVar"> <Pattern>hello {firstName} {lastName}</Pattern> </Variable>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل:
<URIPath> ، <QueryParam> ، <Header> ،
<FormParam> أو <JSONPayload> أو
<XMLPayload>. |
النوع: | لا ينطبق |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
الاسم | اسم المتغيّر المطلوب استخراج القيمة منه |
لا ينطبق |
مطلوب | سلسلة |
<JSONPayload> عنصر
(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). تحدد رسالة بتنسيق JSON التي سيتم استخراج قيمة المتغيّر منها. JSON يتم تنفيذ الاستخراج فقط عندما يكون الرأس Content-Type في الرسالة هو application/json.
<JSONPayload> <Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل:
<URIPath> ، <QueryParam> ، <Header> ،
<FormParam> أو <JSONPayload> أو
<XMLPayload>. |
النوع: | لا ينطبق |
<JSONPayload>/<Variable> عنصر
(مطلوب ضمن عنصر JSONPayload). تحدِّد هذه السياسة المتغيّر الذي يتم فيه تحديد القيمة المستخرجة. المهام المطلوبة. يمكنك تضمين علامات <Variable> متعدّدة في العنصر <Variable> لتعبئة متغيرات متعددة.
<Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable>
الإعداد التلقائي: | لا ينطبق |
الحضور: | هذه السمة مطلوبة ضمن عنصر JSONPayload. |
النوع: | لا ينطبق |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
الاسم |
تحدِّد هذه السياسة اسم المتغيّر الذي سيتم تحويل القيمة المستخرجة إليه. المهام المطلوبة. |
الاسم |
مطلوب | سلسلة |
كتابة | تحدِّد هذه السياسة نوع بيانات قيمة المتغيّر. | لا ينطبق | اختياري |
سلسلة. اختَر من بين:
|
<JSONPayload>/<Variable>/<JSONPath> عنصر
(مطلوب ضمن العنصر JSONPayload:Variable). تُحدِّد مسار JSON المستخدَم لاستخراج من رسالة بتنسيق JSON.
<Variable name="name"> <JSONPath>$.rss.channel.title</JSONPath> </Variable>
الإعداد التلقائي: | لا ينطبق |
الحضور: | مطلوب |
النوع: | سلسلة |
<XMLPayload> عنصر
(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). تحدد
رسالة بتنسيق XML التي سيتم استخراج قيمة المتغيّر منها. حمولات XML
يتم استخراجها فقط عند استخدام عنوان Content-Type
للرسالة
text/xml
، application/xml
،
أو application/*+xml
.
<XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="name" type="boolean"> <XPath>/apigee:test/apigee:example</XPath> </Variable> </XMLPayload>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل:
<URIPath> ، <QueryParam> ، <Header> ،
<FormParam> أو <JSONPayload> أو
<XMLPayload>. |
النوع: | لا ينطبق |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
stopPayloadProcessing |
اضبط القيمة على |
خطأ |
اختياري | منطقي |
<XMLPayload>/<Namespaces> عنصر
(اختياري) تحدّد مساحة الاسم المراد استخدامها في تقييم XPath. إذا كنت تستخدم في تعبيرات XPath، يجب إعلان مساحات الاسم هنا، كما هو موضح في المثال التالي.
<XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="legName" type="string"> <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath> </Variable> </XMLPayload>
إذا كنت لا تستخدم مساحات الاسم في تعبيرات XPath، يمكنك حذف
عنصر <Namespaces>
، كما يبيِّن المثال التالي:
<XMLPayload stopPayloadProcessing="false"> <!-- <Namespaces/> --> <Variable name="legName" type="string"> <XPath>/Directions/route/leg/name</XPath> </Variable> </XMLPayload>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياري |
النوع: | سلسلة |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
prefix |
بادئة مساحة الاسم. |
لا ينطبق |
مطلوب | سلسلة |
<XMLPayload>/<Variable> عنصر
(اختياري) تحدِّد هذه السياسة المتغيّر الذي سيتم تخصيص القيمة المستخرجة له.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
الإعداد التلقائي: | لا ينطبق |
الحضور: | اختياري |
النوع: | لا ينطبق |
السمات
السمة | الوصف | تلقائي | التواجد في المنزل | النوع |
---|---|---|---|---|
الاسم |
تحدِّد هذه السياسة اسم المتغيّر الذي سيتم تحويل القيمة المستخرجة إليه. المهام المطلوبة. |
الاسم |
مطلوب | سلسلة |
كتابة | تحدِّد هذه السياسة نوع بيانات قيمة المتغيّر. | منطقي | اختياري |
سلسلة. اختَر من بين:
|
<XMLPayload>/<Variable>/<XPath> عنصر
(مطلوب ضمن عنصر XMLPayload:Variable). تحدد مسار XPath المحدد المتغير. ويمكن استخدام تعبيرات XPath 1.0 فقط.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
مثال مع مساحة اسم إذا كنت تستخدم مساحات الاسم في تعبيرات XPath، يجب تعريف
مساحات الاسم في القسم <XMLPayload><Namespaces>
من السياسة.
<Variable name="name" type="boolean"> <XPath>/foo:test/foo:example</XPath> </Variable>
الإعداد التلقائي: | لا ينطبق |
الحضور: | مطلوب |
النوع: | سلسلة |
مرجع الخطأ
يصف هذا القسم رموز الخطأ ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تم ضبطها من خلال Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. من المهم معرفة هذه المعلومات إذا كنت تضع قواعد خطأ التعامل مع الأخطاء. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على ما تحتاج إلى معرفته حول أخطاء السياسة والتعامل مع المعالجة والأخطاء.
أخطاء بيئة التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
رمز الخطأ | رموز حالة HTTP | السبب | إصلاح |
---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
يحدث هذا الخطأ في الحالات التالية:
|
build |
steps.extractvariables.ImmutableVariable |
500 | يكون المتغيّر المستخدَم في السياسة غير قابل للتغيير. تعذَّر على السياسة ضبط هذا الإعداد المتغير. | |
steps.extractvariables.InvalidJSONPath |
500 | يحدث هذا الخطأ في حال استخدام مسار JSON غير صالح في العنصر JSONPath ضمن
. على سبيل المثال، إذا لم تحتوي حمولة JSON على الكائن Name ،
ولكن إذا حدّدت Name كمسار في السياسة، سيحدث هذا الخطأ. |
build |
steps.extractvariables.JsonPathParsingFailure |
500 | يحدث هذا الخطأ عندما يتعذّر على السياسة تحليل مسار JSON
استخراج البيانات من متغيّر التدفق المحدَّد في العنصر Source عادةً ما تكون هذه
إذا لم يكن متغيّر التدفق المحدّد في العنصر Source متاحًا في العنصر الحالي
التدفق. |
build |
steps.extractvariables.SetVariableFailed |
500 | يحدث هذا الخطأ إذا لم تتمكّن السياسة من ضبط القيمة على متغيّر. يحدث الخطأ بشكل عام إذا حاولت تعيين قيم لمتغيرات متعددة تبدأ أسماؤها باستخدام الكلمات نفسها بتنسيق مدمج ومفصول بالنقاط. | build |
steps.extractvariables.SourceMessageNotAvailable |
500 | يحدث هذا الخطأ إذا كانت الرسالة
المتغيّر المحدَّد في العنصر Source في السياسة
تكون إما:
|
build |
steps.extractvariables.UnableToCast |
500 | يحدث هذا الخطأ إذا تعذَّر على السياسة بث الملف المستخلص إلى متغير. ويحدث هذا الأمر عادةً إذا حاولت تعيين قيمة نوع بيانات إلى متغير من نوع بيانات آخر. | build |
أخطاء النشر
يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.
اسم الخطأ | السبب | إصلاح |
---|---|---|
NothingToExtract |
إذا كانت السياسة لا تحتوي على أي من العناصر URIPath أو QueryParam ،
Header أو FormParam أو XMLPayload أو JSONPayload ،
فشل نشر خادم وكيل واجهة برمجة التطبيقات، نظرًا لعدم وجود أي شيء لاستخراجه. |
build |
NONEmptyPrefixMappedToEmptyURI |
يحدث هذا الخطأ إذا كانت السياسة تحتوي على بادئة محددة في
عنصر Namespace ضمن العنصر XMLPayload ، ولكن لم يتم تحديد عنوان URI
محددة. |
build |
DuplicatePrefix |
يحدث هذا الخطأ إذا كانت السياسة تحتوي على البادئة نفسها المحدَّدة أكثر من
مرة واحدة في العنصر Namespace ضمن العنصر XMLPayload . |
build |
NoXPathsToEvaluate |
وإذا لم تتضمّن السياسة عنصر XPath في
XMLPayload ، ثم تعذَّر نشر الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور هذا الخطأ.
|
build |
EmptyXPathExpression |
إذا كانت السياسة تتضمّن تعبير XPath فارغًا في XMLPayload
فسيتم إخفاق نشر الخادم الوكيل لواجهة برمجة التطبيقات. |
build |
NoJSONPathsToEvaluate |
وإذا لم تتضمّن السياسة عنصر JSONPath في
JSONPayload ، ثم تعذَّر نشر الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور هذا الخطأ. |
build |
EmptyJSONPathExpression |
وإذا كانت السياسة تتضمّن تعبير XPath فارغًا في
XMLPayload ، ثم تعذَّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. |
build |
MissingName |
إذا لم تتضمّن السياسة السمة name في أي من السياسة
عناصر مثل QueryParam أو Header أو FormParam أو
Variable ، حيثما يكون ذلك مطلوبًا، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. |
build |
PatternWithoutVariable |
إذا لم يتم تحديد متغيّر لهذه السياسة في العنصر Pattern ،
فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. يتطلب العنصر Pattern اسم
المتغير الذي سيتم فيه تخزين البيانات المستخرجة. |
build |
CannotBeConvertedToNodeset |
إذا تضمّنت السياسة تعبير XPath حيث يكون النوع Variable
بأنها nodeset،
ولكن لا يمكن تحويل التعبير إلى مجموعة العقدة، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. |
build |
JSONPathCompilationFailed |
لم تتمكّن السياسة من تجميع مسار JSON محدَّد. | |
InstantiationFailed |
تعذّر إنشاء مثيل للسياسة. | |
XPathCompilationFailed |
إذا كانت البادئة أو القيمة المستخدمة في العنصر XPath ليست جزءًا من أي من
بمساحات الاسم المعلَن عنها في السياسة، فإن نشر الخادم الوكيل لواجهة برمجة التطبيقات
فشل. |
build |
InvalidPattern |
إذا كان تعريف العنصر Pattern غير صالح في أي من العناصر مثل URIPath ،
QueryParam وHeader وFormParam وXMLPayload
أو JSONPayload ضمن السياسة، ثم نشر
تعذّر الخادم الوكيل لواجهة برمجة التطبيقات.
|
build |
متغيّرات الأخطاء
يتم ضبط هذه المتغيّرات عندما تؤدي هذه السياسة إلى ظهور خطأ في وقت التشغيل. لمزيد من المعلومات يمكنك الاطّلاع على ما تحتاج إلى معرفتها حول أخطاء السياسة.
المتغيرات | المكان | مثال |
---|---|---|
fault.name="fault_name" |
fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. | fault.name = "SourceMessageNotAvailable" |
extractvariables.policy_name.failed |
policy_name هو الاسم الذي يحدّده المستخدم للسياسة التي أدّت إلى حدوث الخطأ. | extractvariables.EV-ParseJsonResponse.failed = true |
مثال على استجابة الخطأ
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
مثال على قاعدة الخطأ
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>
المخططات
مواضيع ذات صلة
واجهة برمجة التطبيقات الخاصة بالتحليل محتوى الرسائل باستخدام الإحصاءات المخصّصة