سياسة استخراج المتغيرات

أنت تعرض مستندات 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 كيفية استخدام متغيرات الاستخراج في كل حالة وكيفية نشر متغيرات لتشغيل كل عينة.

معرّفات الموارد المنتظمة (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، فإن معلمات طلب البحث والعناوين ومعلمات النموذج المتغيرات التي تستخدم علامة &lt;Pattern&gt; بها لتحديد واحد أو أكثر الأنماط لمطابقتها. على سبيل المثال، يعرض المثال التالي على السياسة نمطًا مطابقًا واحدًا مسار 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".

تحديد أنماط متعددة

يمكنك تحديد عدة أحرف لمطابقتها، بما يتوافق مع علامات &lt;Pattern&gt;، حيث:

  • ويتم اختبار جميع الأنماط للتأكّد من ملاءمتها.
  • وفي حال عدم تطابُق أي من الأنماط، لن تفعل السياسة أي شيء ولن تكون المتغيرات إنشاء.
  • إذا تطابق أكثر من نمط واحد، يتم استخدام النمط الذي يحتوي على أطول مقاطع مسار لاستخراجه.
  • إذا كان لنمطين متطابقين نفس مقاطع المسار الأطول، فإن النمط المحدد أولاً في أن يتم استخدام السياسة للاستخراج

في المثال التالي، يمكنك إنشاء سياسة تحتوي على ثلاثة أنماط مطابقة لمعرف الموارد المنتظم (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)، يمكنك استخدام الرمز "*" و"**" أحرف البدل في النمط، حيث:

  • "*" تتطابق مع أي جزء من المسار
  • "**" تتطابق مع أجزاء متعددة من المسار

على سبيل المثال، يمكنك تحديد أنماط للعنصر &lt;URIPath&gt; كما هو موضَّح. أدناه:

<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، يمكنك تحديد علامة &lt;Variable&gt; واحدة أو أكثر في السياسة. تحدد العلامة &lt;Variable&gt; اسم متغير الوجهة حيث يتم تخزين المعلومات المستخرجة، وحقل JsonPath (JSON) أو XPATH (XML) إلى المعلومات المستخرجة.

جميع علامات &lt;Variable&gt; في السياسة بحيث يمكنك تعبئة متغيرات متعددة من سياسة واحدة. في حال حذف فإن العلامة &lt;Variable&gt; لا إلى حقل صالح في 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>

&lt;ExtractVariables&gt; السمات

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">

يصف الجدول التالي السمات المشتركة بين جميع العناصر الرئيسية للسياسة:

السمة الوصف تلقائي التواجد في المنزل
name

الاسم الداخلي للسياسة. يمكن لقيمة السمة name أن تحتوي على أحرف وأرقام ومسافات وواصلات وشرطات سفلية ونقاط. لا يمكن لهذه القيمة يتجاوز 255 حرفًا.

يمكنك، إذا أردت، استخدام العنصر <DisplayName> لتصنيف السياسة محرر الخادم الوكيل لواجهة مستخدم الإدارة باسم مختلف بلغة طبيعية.

لا ينطبق مطلوب
continueOnError

اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ سياسة. هذا متوقّع السلوك في معظم السياسات.

يمكنك ضبط القيمة على true لمواصلة تنفيذ المسار حتى بعد تطبيق إحدى السياسات. فشل.

خطأ اختياري
enabled

اضبط القيمة على true لفرض السياسة.

اضبط القيمة على false من أجل إيقاف السياسة. لن تكون السياسة ويتم فرضها حتى لو ظلت مرتبطة بتدفق.

صحيح اختياري
async

تم إيقاف هذه السمة نهائيًا.

خطأ منهي العمل به

&lt;DisplayName&gt; عنصر

استخدِمه مع السمة name لتصنيف السياسة في إدارة خادم وكيل لواجهة المستخدم باسم مختلف بلغة طبيعية.

<DisplayName>Policy Display Name</DisplayName>
تلقائي

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة name للسياسة على النحو التالي: استخدام البيانات المختلفة.

التواجد في المنزل اختياري
النوع سلسلة

&lt;Source&gt; عنصر

(اختياري) تحدِّد هذه السياسة المتغيّر المطلوب تحليله. قيمة يتم ضبط <Source> تلقائيًا على message. قيمة message حساسة للسياق. خلال عملية الطلب، تتم معالجة message مع رسالة الطلب. ضِمن مسار الرد، تتم معالجة message مع رسالة الرد.

وعلى الرغم من أنّك تستخدم هذه السياسة عادةً لاستخراج المعلومات من طلب أو رسالة ردّ، يمكنك يمكنك استخدامه لاستخراج المعلومات من أي متغير. على سبيل المثال، يمكنك استخدامها لاستخراج معلومات من كيان تم إنشاؤه بموجب سياسة AccessEntity، من البيانات التي تم إرجاعها بواسطة الخدمة سياسة وسيلة الشرح أو استخراج المعلومات من كائن XML أو JSON.

إذا تعذّر حلّ <Source>، أو إذا تمت معالجتها إلى نوع غير الرسائل، وسيتعذّر الرد على السياسة.

<Source clearPayload="true|false">request</Source>
الإعداد التلقائي: رسالة
الحضور: اختياري
النوع: سلسلة

السمات

السمة الوصف تلقائي التواجد في المنزل النوع
clearPayload

اضبط القيمة على true إذا كنت تريد محو حمولة البيانات المحددة في &lt;Source&gt; بعد استخراج البيانات منها.

استخدام الخيار <clearPayload> فقط إذا كانت الرسالة المصدر غير مطلوبة بعد تنفيذ متغيّرات استخراج البيانات يؤدي الضبط على true إلى تحرير الذاكرة التي تستخدمها الرسالة.

خطأ

اختياري منطقي

&lt;VariablePrefix&gt; عنصر

(اختياري) يتم إنشاء اسم المتغير الكامل من خلال ضم <VariablePrefix> ونقطة والاسم الذي تحدّده {أقواس معقوفة} في العنصر <Pattern> أو العنصر &lt;Variable&gt;. مثل: myprefix.id أو myprefix.dbncode أو myprefix.oauthtoken.

<VariablePrefix>myprefix</VariablePrefix>

على سبيل المثال، لنفترض أن قيمة الاسم هي "user".

  • إذا لم يتم تحديد <VariablePrefix>، سيتم جمع القيم المستخرجة. المخصص لمتغير اسمه user.
  • إذا تم تحديد <VariablePrefix> كبادئة myprefix، سيتم استخراج يتم تعيين القيم لمتغير يُسمى myprefix.user.
الإعداد التلقائي: لا ينطبق
الحضور: اختياري
النوع: سلسلة

&lt;IgnoreUnresolvedVariables&gt; عنصر

(اختياري) اضبط القيمة على true للتعامل مع أي متغيّر غير قابل للتحليل كسلسلة فارغة. (فارغ). اضبط القيمة على false إذا كنت تريد أن تعرض السياسة رسالة خطأ عند الإشارة إلى أي منها. المتغير غير قابل للتحليل.

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
الإعداد التلقائي: خطأ
الحضور: اختياري
النوع: منطقي

وإذا لم يتم حلّ مرجع XPath في <XMLPayload>، يتم تطبيق السياسة الخطأ التالي:

{
   "fault":{
      "faultstring":"Unresolved xpath path in policy policy_name.",
      "detail":{
         "errorcode":"steps.extractvariables.InvalidXPath"
      }
   }
}

&lt;URIPath&gt; عنصر

(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). لاستخراج قيمة من الوكيل.pathsuffix لرسالة مصدر الطلب. المسار المطبق على يكون النمط هوproxy.pathsuffix، الذي لا يتضمن المسار الأساسي لخادم وكيل واجهة برمجة التطبيقات. في حال حذف يؤدي تحويل رسالة المصدر إلى نوع الرسالة response، وعندئذٍ لا يفعل هذا العنصر أي شيء.

<URIPath>
   <Pattern ignoreCase="false">/accounts/{id}</Pattern>
</URIPath>

ومن الممكن استخدام عناصر &lt;Pattern&gt; متعددة:

<URIPath>
   <Pattern ignoreCase="false">/accounts/{id}</Pattern>
   <Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern>
</URIPath>
الإعداد التلقائي: لا ينطبق
الحضور: اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل: <URIPath>، <QueryParam>، <Header>، <FormParam> أو <JSONPayload> أو <XMLPayload>.
النوع: لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل النوع
ignoreCase يُحدد لتجاهل الحالة عند مطابقة الأب.

خطأ

اختياري منطقي

&lt;QueryParam&gt; عنصر

(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). لاستخراج قيمة من معلَمة طلب البحث المحدّدة لرسالة مصدر 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، وهكذا.

لا ينطبق

مطلوب سلسلة

&lt;Header&gt; عنصر

(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). لاستخراج قيمة من عنوان 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 للحصول على جميع العناوين في المصفوفة.

لا ينطبق

مطلوب سلسلة

&lt;FormParam&gt; عنصر

(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). لاستخراج قيمة من مَعلمة النموذج المحدّدة لرسالة request أو response المحدّدة. معلمات النموذج لا يمكن استخراجه إلا عندما يكون عنوان Content-Type للرسالة المحدّدة هو application/x-www-form-urlencoded

<FormParam name="greeting">
    <Pattern>hello {user}</Pattern>
</FormParam>
الإعداد التلقائي: لا ينطبق
الحضور: اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل: <URIPath>، <QueryParam>، <Header>، <FormParam> أو <JSONPayload> أو <XMLPayload>.
النوع: لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل النوع
الاسم اسم مَعلمة النموذج التي يمكنك استخراج القيمة منها

لا ينطبق

مطلوب سلسلة

&lt;Variable&gt; عنصر

(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). تحدد اسم المتغير المطلوب استخراج قيمة منه.

<Variable name="myVar">
    <Pattern>hello {user}</Pattern>
</Variable>

لاستخراج قيمتَين من المتغيّر:

<Variable name="myVar">
   <Pattern>hello {firstName} {lastName}</Pattern>
</Variable>
الإعداد التلقائي: لا ينطبق
الحضور: اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل: <URIPath>، <QueryParam>، <Header>، <FormParam> أو <JSONPayload> أو <XMLPayload>.
النوع: لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل النوع
الاسم اسم المتغيّر المطلوب استخراج القيمة منه

لا ينطبق

مطلوب سلسلة

&lt;JSONPayload&gt; عنصر

(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). تحدد رسالة بتنسيق JSON التي سيتم استخراج قيمة المتغيّر منها. JSON يتم تنفيذ الاستخراج فقط عندما يكون الرأس Content-Type في الرسالة هو application/json.

<JSONPayload>
   <Variable name="name" type="string">
      <JSONPath>{example}</JSONPath>
   </Variable>
</JSONPayload>
الإعداد التلقائي: لا ينطبق
الحضور: اختياريّ. ومع ذلك، يجب تضمين أحد العناصر التالية على الأقل: <URIPath>، <QueryParam>، <Header>، <FormParam> أو <JSONPayload> أو <XMLPayload>.
النوع: لا ينطبق

&lt;JSONPayload&gt;/&lt;Variable&gt; عنصر

(مطلوب ضمن عنصر JSONPayload). تحدِّد هذه السياسة المتغيّر الذي يتم فيه تحديد القيمة المستخرجة. المهام المطلوبة. يمكنك تضمين علامات &lt;Variable&gt; متعدّدة في العنصر &lt;Variable&gt; لتعبئة متغيرات متعددة.

<Variable name="name" type="string">
   <JSONPath>{example}</JSONPath>
</Variable>
الإعداد التلقائي: لا ينطبق
الحضور: هذه السمة مطلوبة ضمن عنصر JSONPayload.
النوع: لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل النوع
الاسم

تحدِّد هذه السياسة اسم المتغيّر الذي سيتم تحويل القيمة المستخرجة إليه. المهام المطلوبة.

الاسم

مطلوب سلسلة
كتابة تحدِّد هذه السياسة نوع بيانات قيمة المتغيّر. لا ينطبق اختياري

سلسلة. اختَر من بين:

  • سلسلة
  • منطقي
  • عدد صحيح
  • طويلة
  • عدد عائم
  • مزدوج
  • مجموعة العقدة (تعرض جزء JSON)

&lt;JSONPayload&gt;/&lt;Variable&gt;/&lt;JSONPath&gt; عنصر

(مطلوب ضمن العنصر JSONPayload:Variable). تُحدِّد مسار JSON المستخدَم لاستخراج من رسالة بتنسيق JSON.

<Variable name="name">
   <JSONPath>$.rss.channel.title</JSONPath>
</Variable>
الإعداد التلقائي: لا ينطبق
الحضور: مطلوب
النوع: سلسلة

&lt;XMLPayload&gt; عنصر

(اختياري، ولكن يمكنك الاطّلاع على صف التواجد في الجدول أدناه للحصول على مزيد من المعلومات). تحدد رسالة بتنسيق 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

اضبط القيمة على true لإيقاف تقييم XPath بعد تعبئة متغيّر واحد. وهذا يعني أنّه تتم تعبئة متغيّر واحد فقط من خلال السياسة.

خطأ

اختياري منطقي

&lt;XMLPayload&gt;/&lt;Namespaces&gt; عنصر

(اختياري) تحدّد مساحة الاسم المراد استخدامها في تقييم 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

بادئة مساحة الاسم.

لا ينطبق

مطلوب سلسلة

&lt;XMLPayload&gt;/&lt;Variable&gt; عنصر

(اختياري) تحدِّد هذه السياسة المتغيّر الذي سيتم تخصيص القيمة المستخرجة له.

<Variable name="name" type="boolean">
   <XPath>/test/example</XPath>
</Variable>
الإعداد التلقائي: لا ينطبق
الحضور: اختياري
النوع: لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل النوع
الاسم

تحدِّد هذه السياسة اسم المتغيّر الذي سيتم تحويل القيمة المستخرجة إليه. المهام المطلوبة.

الاسم

مطلوب سلسلة
كتابة تحدِّد هذه السياسة نوع بيانات قيمة المتغيّر. منطقي اختياري

سلسلة. اختَر من بين:

  • سلسلة
  • منطقي
  • عدد صحيح
  • طويلة
  • عدد عائم
  • مزدوج
  • canset (عرض جزء XML)

&lt;XMLPayload&gt;/&lt;Variable&gt;/&lt;XPath&gt; عنصر

(مطلوب ضمن عنصر 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

يحدث هذا الخطأ في الحالات التالية:

  • حمولة البيانات المُدخلة (JSON أو XML) فارغة.
  • الإدخال (JSON وXML وغيرهما) الذي تم إدخاله إلى السياسة غير صالح أو مكتوب بشكل غير صحيح.
steps.extractvariables.ImmutableVariable 500 يكون المتغيّر المستخدَم في السياسة غير قابل للتغيير. تعذَّر على السياسة ضبط هذا الإعداد المتغير.
steps.extractvariables.InvalidJSONPath 500 يحدث هذا الخطأ في حال استخدام مسار JSON غير صالح في العنصر JSONPath ضمن . على سبيل المثال، إذا لم تحتوي حمولة JSON على الكائن Name، ولكن إذا حدّدت Name كمسار في السياسة، سيحدث هذا الخطأ.
steps.extractvariables.JsonPathParsingFailure 500 يحدث هذا الخطأ عندما يتعذّر على السياسة تحليل مسار JSON استخراج البيانات من متغيّر التدفق المحدَّد في العنصر Source عادةً ما تكون هذه إذا لم يكن متغيّر التدفق المحدّد في العنصر Source متاحًا في العنصر الحالي التدفق.
steps.extractvariables.SetVariableFailed 500 يحدث هذا الخطأ إذا لم تتمكّن السياسة من ضبط القيمة على متغيّر. يحدث الخطأ بشكل عام إذا حاولت تعيين قيم لمتغيرات متعددة تبدأ أسماؤها باستخدام الكلمات نفسها بتنسيق مدمج ومفصول بالنقاط.
steps.extractvariables.SourceMessageNotAvailable 500 يحدث هذا الخطأ إذا كانت الرسالة المتغيّر المحدَّد في العنصر Source في السياسة تكون إما:
  • خارج النطاق (لا تتوفّر خلال المسار المحدّد الذي يتم فيه تنفيذ السياسة)
  • يتعذّر حلّها (غير محدَّد)
steps.extractvariables.UnableToCast 500 يحدث هذا الخطأ إذا تعذَّر على السياسة بث الملف المستخلص إلى متغير. ويحدث هذا الأمر عادةً إذا حاولت تعيين قيمة نوع بيانات إلى متغير من نوع بيانات آخر.

أخطاء النشر

يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.

اسم الخطأ السبب إصلاح
NothingToExtract إذا كانت السياسة لا تحتوي على أي من العناصر URIPath أو QueryParam، Header أو FormParam أو XMLPayload أو JSONPayload، فشل نشر خادم وكيل واجهة برمجة التطبيقات، نظرًا لعدم وجود أي شيء لاستخراجه.
NONEmptyPrefixMappedToEmptyURI يحدث هذا الخطأ إذا كانت السياسة تحتوي على بادئة محددة في عنصر Namespace ضمن العنصر XMLPayload، ولكن لم يتم تحديد عنوان URI محددة.
DuplicatePrefix يحدث هذا الخطأ إذا كانت السياسة تحتوي على البادئة نفسها المحدَّدة أكثر من مرة واحدة في العنصر Namespace ضمن العنصر XMLPayload.
NoXPathsToEvaluate وإذا لم تتضمّن السياسة عنصر XPath في XMLPayload، ثم تعذَّر نشر الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور هذا الخطأ.
EmptyXPathExpression إذا كانت السياسة تتضمّن تعبير XPath فارغًا في XMLPayload فسيتم إخفاق نشر الخادم الوكيل لواجهة برمجة التطبيقات.
NoJSONPathsToEvaluate وإذا لم تتضمّن السياسة عنصر JSONPath في JSONPayload، ثم تعذَّر نشر الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور هذا الخطأ.
EmptyJSONPathExpression وإذا كانت السياسة تتضمّن تعبير XPath فارغًا في XMLPayload، ثم تعذَّر نشر الخادم الوكيل لواجهة برمجة التطبيقات.
MissingName إذا لم تتضمّن السياسة السمة name في أي من السياسة عناصر مثل QueryParam أو Header أو FormParam أو Variable، حيثما يكون ذلك مطلوبًا، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات.
PatternWithoutVariable إذا لم يتم تحديد متغيّر لهذه السياسة في العنصر Pattern، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. يتطلب العنصر Pattern اسم المتغير الذي سيتم فيه تخزين البيانات المستخرجة.
CannotBeConvertedToNodeset إذا تضمّنت السياسة تعبير XPath حيث يكون النوع Variable بأنها nodeset، ولكن لا يمكن تحويل التعبير إلى مجموعة العقدة، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات.
JSONPathCompilationFailed لم تتمكّن السياسة من تجميع مسار JSON محدَّد.
InstantiationFailed تعذّر إنشاء مثيل للسياسة.
XPathCompilationFailed إذا كانت البادئة أو القيمة المستخدمة في العنصر XPath ليست جزءًا من أي من بمساحات الاسم المعلَن عنها في السياسة، فإن نشر الخادم الوكيل لواجهة برمجة التطبيقات فشل.
InvalidPattern إذا كان تعريف العنصر Pattern غير صالح في أي من العناصر مثل URIPath، QueryParam وHeader وFormParam وXMLPayload أو JSONPayload ضمن السياسة، ثم نشر تعذّر الخادم الوكيل لواجهة برمجة التطبيقات.

متغيّرات الأخطاء

يتم ضبط هذه المتغيّرات عندما تؤدي هذه السياسة إلى ظهور خطأ في وقت التشغيل. لمزيد من المعلومات يمكنك الاطّلاع على ما تحتاج إلى معرفتها حول أخطاء السياسة.

المتغيرات المكان مثال
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>

المخططات

مواضيع ذات صلة

واجهة برمجة التطبيقات الخاصة بالتحليل محتوى الرسائل باستخدام الإحصاءات المخصّصة

مرجع المتغيّرات