extraVariables politikası

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Ne?

ExtractVariables politikası, bir istek veya yanıttaki içeriği ayıklar ve bir değişken oluşturabilirsiniz. Üstbilgiler, URI yolları, JSON/XML yükleri, form veya ve sorgu parametrelerini dahil etmektir. Politika, iletiye bir metin kalıbı uygulayarak çalışır bir eşleşme bulduğunda, belirtilen ileti içeriğiyle bir değişken ayarlar.

Bu politikayı genellikle bir istek veya yanıt mesajından bilgi ayıklamak için kullansanız da, tarafından oluşturulan varlıklar dahil olmak üzere diğer kaynaklardan bilgi ayıklamak için de kullanabilir. AccessEntity politikası XML nesneleri veya JSON nesneleri.

Belirtilen ileti içeriğini çıkardıktan sonra, diğer politika ve politikaların bir parçası olarak değerlendirilebilir.

Videolar

ExtractDeğişkenler politikası hakkında daha fazla bilgi edinmek için aşağıdaki videoları izleyin.

Video Açıklama
Değişkenleri ayıklama XML yükünden Değişkeni Ayıklama politikasını kullanarak XML yükünden değişkenleri çıkarın.
Değişkenleri ayıklama JSON yükünden Değişkeni Ayıklama politikasını kullanarak JSON yükünden değişkenleri çıkarın.
Değişkenleri ayıklama parametrelerinden Parametrelerden sorgu, başlık, form veya URI parametreleri gibi değişkenleri ayıklayın.
Değişkenleri ayıklama birden fazla değere sahip parametrelerden Birden çok değerli parametrelerden değişkenleri ayıklayın.
Değişkenleri ayıklama sorgu parametresinden (Klasik Edge) Klasik Edge kullanıcı arayüzünü kullanarak sorgu parametresinden değişkenleri çıkarın.
Değişkenleri ayıklama XML veya JSON yükünden (Klasik Edge) Classic Edge kullanıcı arayüzünü kullanarak XML veya JSON yükünden değişkenleri çıkarın.

Örnekler

Bu politika kodu örnekleri, aşağıdaki türlerdeki değişkenlerin nasıl ayıklanacağını gösterir: yapın:

GitHub

Bu bağlantılar, Edge'de dağıtıp çalıştırabileceğiniz çalışan API proxy örneklerine işaret eder. Onlar ExtractVariables'ı kullanan ve Apigee'nin api-platform-samples deposunda bulunan GitHub. README'ler, ExtractVariables'ın her bir durumda nasıl kullanıldığını ve her örneği çalıştırıyor.

URI'ler

<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>

Yukarıdaki örnek politika kodunu inceleyin. <URIPath> öğesi şunu bildirir: URI yolundan bilgi ayıklamak için ExtractVariables politikası. İlgili içeriği oluşturmak için kullanılan <Pattern> öğesi, URI yoluna uygulanacak kalıbı belirtir. İlgili içeriği oluşturmak için kullanılan desen, değişen kısmı belirten süslü ayraçlar içeren basit bir şablon olarak ele alınır olabilir.

Ayarlanacak değişkenin adı, <VariablePrefix> öğesi ve süslü ayraçlar {} içine alınmış değer değerini <Pattern> öğesi içine alın. İki değer, araya giren bir noktayla birleştirilir. sonuçta urirequest.id değişken adı elde edilir. Herhangi bir <VariablePrefix> öğesi içeriyorsa değişken adı yalnızca içeren, kıvrık ayraçlar var.

Aşağıdaki gelen istekle çalışırken yukarıdaki örnek politika kodunu göz önünde bulundurun:

GET http://org1-test.apigee.net/svc1/accounts/12797282

API Proxy'sinin temel yolunun /svc1 olduğunu varsayalım. Apigee Edge Yukarıdaki ExtractDeğişkenler politika kodunu bu gelen isteğe ayarlar, urirequest.id - 12797282. Apigee Edge politikayı yürüttükten sonra, veya işleme akışındaki kod, Google Ad Manager'da 12797282 dize değerini almak için urirequest.id.

Örneğin, aşağıdakiassignMessage politikası, bu değişkenin değerini yeni istek mesajının yükü:

<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>

Sorgu parametreleri

<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>

Aşağıdaki gelen istekle çalışırken yukarıdaki örnek politika kodunu göz önünde bulundurun:

GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271

Apigee Edge bu gelen isteğe yukarıdaki ExtractVariables politika kodunu uyguladığında queryinfo.dbncode değişkenini 88271 olarak ayarlar. Apigee Edge'den sonra politikası yürüttüğünde, işleme akışındaki sonraki politikalar veya kod, 88271 dize değerini almak için queryinfo.dbncode adlı değişkeni kullanın.

Artık proxy'nizde queryinfo.dbncode değişkenine erişebilirsiniz. Örneğin, aşağıdaki AttributionMessage politikası bunu isteğin yüküne kopyalar:

<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>

Birden fazla parametre

<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>

API tasarımınızın aynı parametre ile birden çok sorgu parametresi belirtmenize olanak dokunun. Bu politikayı, sorgunun birden fazla örneğinin değerini ayıklamak için kullanabilirsiniz parametresi için "w" ExtractDeğişkenler politikasında bu sorgu parametrelerine referans vermek için sorgu parametresinin ilk örneğinin dizini olmadığı, ikincisinin ise üçüncü dizin 2, üçüncü dizin 3 vb.

Aşağıdaki gelen istekle çalışırken yukarıdaki örnek politika kodunu göz önünde bulundurun:

GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago

Apigee Edge bu gelen isteğe yukarıdaki ExtractVariables politika kodunu uyguladığında queryinfo.firstWeather değişkenini Boston ve queryInfo.secondWeather - Chicago değişkeni

Artık queryinfo.firstWeather değişkenine erişebilir ve queryinfo.secondWeather - proxy'niz. Örneğin, aşağıdaki AtamentMessage politikası, bu iletiyi istek:

<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>

Üst bilgiler

<ExtractVariables name='ExtractVariable-OauthToken'>
  <Source>request</Source>
  <Header name="Authorization">
    <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
  </Header>
  <VariablePrefix>clientrequest</VariablePrefix>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

API'nizin OAuth v2.0 hamiline ait jetonlar kullandığını varsayalım. Yukarıdaki örnek politika kodunu inceleyin aşağıdaki gibi bir başlık içeren OAuth v2.0 jetonu içeren bir istekle çalışma: Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM..

API tasarımcısı olarak, jeton değerini (ancak üstbilgisi) önbellek aramasında anahtar olarak kullanır. Yukarıdaki ExtractVariables politika kodunu kullanarak jetonu çıkarın.

Apigee Edge, yukarıdaki ExtractVariables politika kodunu bu başlığa uyguladığında clientrequest.oauthtoken değişkenini TU08xptfFfeM7aS0xHqlxTgEAdAM.

Artık clientrequest.oauthtoken değişkenine şuradan erişebilirsiniz: temsil eder. Örneğin, aşağıdaki AtamentMessage politikası, bu iletiyi istek:

<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>$

Şu JSON yanıt yükünü göz önünde bulundurun:

{
  "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, yukarıdaki ExtractVariables politika kodunu bu JSON mesajına uyguladığında iki değişken belirler: geocoderesponse.latitude ve geocoderesponse.longitude. Her iki değişken de aynı değişken ön ekini kullanır: geocoderesponse Bu değişkenlere ilişkin sonek <Variable> öğesinin name özelliği.

geocoderesponse.latitude değişkeni 37.42291810. geocoderesponse.longitude değişkeni -122.08542120.

Artık geocoderesponse.latitude değişkenine şuradan erişebilirsiniz: temsil eder. Örneğin, aşağıdaki Atalama İletisi politikası bunu "latitude" adlı bir üstbilgiye kopyalar yanıt:

<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>

Aşağıdaki XML yanıtı yükünü göz önünde bulundurun:

<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, yukarıdaki ExtractDeğişkenler politika kodunu bu XML mesajına uyguladığında üç değişken belirler: directionsresponse.travelmode, directionsresponse.duration ve directionsresponse.timeunit. Tümü değişkenler directionsresponse ile aynı değişken ön ekini kullanır. Sonek bu değişkenler, <Variable> öğesinin name özelliği için de geçerlidir.

directionsresponse.travelmode değişkeni DRIVING. directionsresponse.duration değişkeni 19. directionsresponse.timeunit değişkeni minutes.

Artık directionresponse.travelmode değişkenine şuradan erişebilirsiniz: proxy'niz. Örneğin, aşağıdaki Atalama İletisi politikası bunu "tmode" yanıt:

<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>

ExtractDeğişkenler politikası hakkında

API geliştiricileri, mesajların içeriğine göre farklı şekilde davranan API proxy'leri oluşturur. Buna başlıklar, URI yolları, yük ve sorgu parametreleri dahildir. Proxy, genellikle bölümünü koşul ifadesinde kullanılmak üzere bu içeriğin bir kısmına dahil etmeyi unutmayın. Aşağıdaki işlemler için ExtractVariables politikasını bu.

ExtractVariables politikasını tanımlarken şunları seçebilirsiniz:

  • Ayarlanacak değişkenlerin adları
  • Değişkenlerin kaynağı
  • Çıkarılacak ve ayarlanacak değişken sayısı

Yürütüldükten sonra politika, içeriğe bir metin kalıbı uygular ve eşleşme bulduğunda içerikle birlikte belirtilen değişkenin değeri. Böylece diğer politikalar ve kodlar bu değişkenleri dinamik davranışı etkinleştirmek veya iş verilerini Edge API Analytics'e göndermek için kullanın.

İçerik odaklı Analytics raporları oluşturmak amacıyla ExtractVariables'ın nasıl kullanılabileceğini öğrenmek için Analiz Etme Özel analizler kullanan API mesaj içeriği.

Kapsam

ExtractVariables politikasıyla ayarlanan değişkenler genel kapsama sahiptir. Yani, ExtractDeğişkenler politikası yeni bir değişken tanımladığında, bu değişkene herhangi bir politika veya kodu (ExtractVariables politikasından sonra yürütülen) ekleyebilirsiniz. Bu şunları içerir:

  • PreFlow: ProxyEndpoint ve TargetEndpoint (İstek ve Yanıt)
  • PostFlow: ProxyEndpoint ve TargetEndpoint (İstek ve Yanıt)
  • PostClientFlow: ProxyEndpoint (Yalnızca Yanıt, İleti Kaydı politikası)
  • Hata Akışları
ziyaret edin.

Eşleştirme ve değişken oluşturma hakkında

ExtractVariables politikası bir istek veya yanıttaki bilgileri ayıklar ve bir değişkene dönüştürmenizi sağlar. Ayıklayabileceğiniz her bilgi türü için (örneğin, URI yolu veya ile eşleşen kalıbı ve değeri tutmak için kullanılan değişkenin adını çıkartılmış bilgilerdir.

Ancak kalıp eşleştirmenin çalışma şekli, ayıklamanın kaynağına bağlıdır. Aşağıdakiler bölümleri, çıkarabileceğiniz iki temel bilgi kategorisini açıklar.

Eşleşen URI yolları, sorgu parametreleri, başlıklar, form parametreleri ve değişkenler

URI yolundan bilgi ayıklarken sorgu parametreleri, başlıklar, form parametreleri ve bir veya daha fazla değişken belirtmek için &lt;Pattern&gt; etiketini kullandığınız eşleştirmeye karar verdik. Örneğin, aşağıdaki politika örneğinde, URI yolu:

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

Bu örnekte, urirequest.pathSeg değişkeni ayarlanmıştır proxy.pathsuffix'de "/a/" işaretinden sonra gelen kısım ile aynı olacaktır. Örneğin, API Proxy'nizin /basepath/v1 olması gerekir . Gelen istekle http://myCo.com/basepath/v1/a/b adresine değişkeni "b" olarak ayarlanmış olmalıdır.

Birden çok kalıp belirtme

&lt;Pattern&gt; etiketlerine karşılık gelen eşleşme için birden fazla kalıp belirtebilirsiniz. Burada:

  • Tüm kalıplar eşleşme için test edilir.
  • Kalıplardan hiçbiri eşleşmezse politika hiçbir şey yapmaz ve değişkenler eşleşmez oluşturuldu.
  • Birden fazla kalıp eşleşirse en uzun yol segmentlerine sahip kalıp çıkarma işlemi.
  • Eşleşen iki kalıp aynı en uzun yol segmentlerine sahipse, ilk olarak bu politika ayıklama için kullanılır.

Sonraki örnekte, URI için eşleşen üç kalıp içeren bir politika oluşturursunuz. yol:

<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>

Temel yolu /basepath/v1 olan bir API Proxy'sinin gelen istek URL'sinin bağlantısı aşağıdaki biçimdedir:

http://myCo.com/basepath/v1/a/b

Bu örnekte, ilk kalıp URI ile eşleşir ve urirequest.pathSeg değişkeni "b" olarak ayarlayın.

İstek URL'si:

http://myCo.com/basepath/v1/a/b/c/d

...o zaman üçüncü kalıp eşleşir ve urirequest.pathSeg değişkeni "d" olarak ayarlanır.

Birden çok değişkenli kalıplar belirleme

Eşleşen kalıpta birden çok değişken belirtebilirsiniz. Örneğin, eşleştirme kalıbı:

<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>

Yine , gelen istek için temel yolu /basepath/v1 olan bir API Proxy'si düşünelim. URL:

http://myCo.com/basepath/v1/a/b/c/d

...urirequest.pathSeg1 değişkeni "b" olarak ayarlanmış ve urirequest.pathSeg2 değişkeni "d" olarak ayarlanır.

Kalıpta birden fazla örneği eşleştirme

Kalıpları, aynı ada sahip bir öğenin birden fazla örneği olduğunda da eşleştirebilirsiniz. Örneğin, birden çok sorgu parametresi veya birden çok başlık içeren bir istekte bulunabilirsiniz. sahip olmanız gerekir. Aşağıdaki istek "w" adlı iki sorgu parametresi içeriyor:

http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2

ExtractDeğişkenler politikasında bu sorgu parametrelerine başvurmak için dizinleri kullanırsınız. sorgu parametresinin ilk örneği dizin 2'de, üçüncüsü olacak şekilde dizin 2'de dizin 3 vb. eklenebilir. Örneğin aşağıdaki politika, ikinci sorgu parametresinin değerini ayıklar adı "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 değişkeni: "2" değerine ayarlayın. İkinci sorgu parametresi istekten çıkarılırsa urirequest.secondW değişkeni boştur. İstekte aynı ada sahip birden fazla öğe olduğunda dizine ekleme işlevini kullanın.

Kalıpta özel karakterler kullanma

URI yollarını eşleştirirken "*" kullanabilirsiniz. ve "**" kalıpta joker karakterler varsa burada:

  • "*" yolun herhangi bir segmentiyle eşleşir
  • "**" Yolun birden çok segmentiyle eşleşir

Örneğin, &lt;URIPath&gt; öğesine aşağıda gösterildiği gibi kalıplar belirtirsiniz aşağıda bulabilirsiniz:

<URIPath>
  <Pattern ignoreCase="true">/a/*/{id}</Pattern>
  <Pattern ignoreCase="true">/a/**/{id}</Pattern>
</URIPath>

İlk kalıp, istekleri path ekleriyle eşleştirir (bundan sonra gelen URI yolunun "/a/b/c", "/a/foo/bar" vb. gibi) oluşturun. İkinci kalıp, istediğiniz sayıda yol ile eşleşir "/a/" karakterinden sonraki segmentler (ör. "/a/foo/bar/baz/c" ve "/a/b/c") ve "/a/foo/bar" yer alır.

Sorgu parametreleri, başlıklar ve form parametreleri için kalıp belirtirken "*" karakteri herhangi bir sayıda karakterle eşleşecek şekilde belirtir. Örneğin, bir üstbilgiyi eşleştirirken kalıbı şu şekildedir:

*;charset={encoding}

Bu kalıp, şu değerlerle eşleşir: "text/xml;charset=UTF-16" ve "application/xml;charset=ASCII".

ExtractVariables politikasına iletilen değer, "{", "%" kullanın karakteri ile karşılaşırsınız. Aşağıdaki örnekte "{" atlanır ve "}" karakterler kalıbın değerini belirtir, çünkü sorgunun değerinde düz karakterler olarak kullanılır parametresi:

<QueryParam>
  <Pattern ignoreCase="true">%{user%} {name}</Pattern>
</QueryParam>

Bu örnekte kalıp, "{user} Serkan" değeriyle eşleşir. "user" değerini değil Serdar" gibi.

Eşleşen JSON ve XML

JSON ve XML'den veri ayıklarken politikada bir veya daha fazla &lt;Variable&gt; etiketi belirtirsiniz. &lt;Variable&gt; etiketi ayıklanan bilgilerin depolandığı hedef değişkenin adı ve JsonPath (JSON) veya XPATH (XML) ile uzaklaştırın.

Politikadaki tüm &lt;Variable&gt; etiketleri değerlendirildiğinden, tek bir politikadan birden fazla değişkeni doldurabilirsiniz. Eğer &lt;Variable&gt; etiketi JSON veya XML'de geçerli bir alan olarak değerlendiriyorsanız, karşılık gelen değişken oluşturuldu.

Aşağıdaki örnekte, Yanıtın JSON gövdesi:

<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>

birden çok yerde aynı değişken

Ayarlanacak değişkenlerin adlarını seçerken dikkatli olun. Bu politika, çıkarma kalıbından sonuncuya taşıması gerekir. Politika, aynı değişkene birden çok basamak içeriyorsa, politikadaki son yazma değişkenin değerini belirler. (Bu, istediğinize karar verin.)

Örneğin, bir sorgu parametresinde iletilebilecek bir jeton değerini ayıklamak istiyorsunuz veya aşağıda gösterildiği gibi bir başlık içinde:

<!-- 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>

Hiçbir eşleşme olmadığında ne olacağını kontrol etme

Kalıp eşleşmezse karşılık gelen değişken oluşturulmaz. Bu nedenle, başka bir politika değişkene referansta bulunursa hataya neden olabilir.

Seçeneklerden biri, <IgnoreUnresolvedVariables> değerini yapılacak politikayı yapılandırmak için değişkene referans veren bir politikada true (doğru) herhangi bir çözümlenemeyen değişken boş dize olarak (boş):

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>

Öğe referansı

Öğe referansı, ExtractVariables'ın öğelerini ve özelliklerini açıklar politikası.

<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; özellikler

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

Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğe

Politikayı name özelliğine ek olarak farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi çıkarırsanız politikanın name özelliğinin değeri: kullanılır.

Varlık İsteğe bağlı
Tür Dize

&lt;Source&gt; öğe

(İsteğe bağlı) Ayrıştırılacak değişkeni belirtir. The value of <Source>, varsayılan olarak message değerine ayarlıdır. message değeri bağlama duyarlıdır. İstek akışında message, istek mesajını çözümler. İçinde bir yanıt akışı sağlarsa message, yanıt mesajına çözümlenir.

Bu politikayı genellikle bir istek veya yanıt mesajından bilgi ayıklamak için kullansanız da, bunu herhangi bir değişkenden bilgi ayıklamak için kullanabilir. Örneğin, Arkadaş Bitkiler projesinin AccessEntity politikası tarafından oluşturulan bir varlıktaki verilerden alınan bilgiler Hizmet tarafından iade edildi Çağrı politikası veya bir XML ya da JSON nesnesindeki bilgileri ayıklayın.
.
. <Source> çözümlenemezse veya mesaj olmayan bir türe çözümlenirse: politika yanıt vermez.

<Source clearPayload="true|false">request</Source>
Varsayılan: mesaj
Bulunma: İsteğe bağlı
Tür: Dize

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
clearPayload

&lt;Source&gt; otomatik olarak eklenir.
.
. <clearPayload> seçeneğini yalnızca kaynak mesaj ExtractDeğişkenleri yürütüldükten sonra gereken tüm görevleri içerir. true değerine ayarlamak ücretsiz olarak sunulur. mesaj tarafından kullanılan hafızada paylaştırılır.

false

İsteğe bağlı Boole

&lt;VariablePrefix&gt; öğe

(İsteğe bağlı) Değişken adının tamamı, <VariablePrefix>, bir nokta ve <Pattern> öğesi veya &lt;Variable&gt; öğesi. Örnek: myprefix.id, myprefix.dbncode veya myprefix.oauthtoken.

<VariablePrefix>myprefix</VariablePrefix>

Örneğin, ad değerinin "user" olduğunu varsayalım.

  • <VariablePrefix> belirtilmezse çıkarılan değerler şunlardır: Parametresi user adlı bir değişkene atanmıştır.
  • <VariablePrefix> önekim olarak belirtilirse çıkarılan değerleri, myprefix.user adlı bir değişkene atanır.
Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür: Dize

&lt;IgnoreUnresolvedVariables&gt; öğe

(İsteğe bağlı) Çözümlenemeyen değişkenleri boş dize olarak değerlendirmek için true olarak ayarlayın. (boş). Herhangi bir referans verildiğinde politikanın hata vermesini istiyorsanız false olarak ayarlayın değişkeni çözümlenemez.

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Varsayılan: Yanlış
Bulunma: İsteğe bağlı
Tür: Boole

Bir XPath referansı <XMLPayload> içinde çözülmezse politika şu hata oluştu:

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

&lt;URIPath&gt; öğe

(İsteğe bağlı ancak daha fazla bilgi için aşağıdaki tabloda bulunan Durum satırına bakın.) Değer çıkarır "istek kaynak mesajının proxy.pathsuffix'inden. Uygulanan yol kalıp, proxy.pathsuffix'tir. Bu dosya, API Proxy'sinin temel yolunu içermez. Eğer kaynak mesaj yanıt türünde bir mesaja çözümlenirse bu öğenin hiçbir etkisi olmaz.

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

Birden çok &lt;Pattern&gt; öğesi kullanılabilir:

<URIPath>
   <Pattern ignoreCase="false">/accounts/{id}</Pattern>
   <Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern>
</URIPath>
Varsayılan: Yok
Bulunma: İsteğe bağlı. Ancak, aşağıdakilerden en az birini eklemeniz gerekir: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> veya <XMLPayload>.
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
ignoreCase Baba ile eşleşirken büyük/küçük harfin yoksayılacağını belirtir.

false

İsteğe bağlı Boole

&lt;QueryParam&gt; öğe

(İsteğe bağlı ancak daha fazla bilgi için aşağıdaki tabloda bulunan Durum satırına bakın.) Değer çıkarır request kaynak mesajının belirtilen sorgu parametresinden seçilir. Öğe kaynak mesaj yanıt türünde bir mesaja çözümlenirse bu öğe hiçbir şey.

<QueryParam name="code">
   <Pattern ignoreCase="true">DBN{dbncode}</Pattern>
</QueryParam>

Birden çok sorgu parametresi aynı ada sahipse parametrelere referans vermek için dizinleri kullanın:

<QueryParam name="w.2">
   <Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>
Varsayılan: Yok
Bulunma: İsteğe bağlı. Ancak, aşağıdakilerden en az birini eklemeniz gerekir: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> veya <XMLPayload>.
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
ad Sorgu parametresinin adını belirtir. Birden fazla sorgu parametresi aynı ad, dizine eklenmiş referansı kullanın; burada sorgu parametresinin ikinci dizin 2, üçüncü dizin 3 vb. dizinde yer almaktadır.

Yok

Zorunlu Dize

&lt;Header&gt; öğe

(İsteğe bağlı ancak daha fazla bilgi için aşağıdaki tabloda bulunan Durum satırına bakın.) Değer çıkarır Belirtilen istek veya yanıt mesajının belirtilen HTTP başlığından. Birden fazla başlık aynı ada sahip olursa değerleri bir dizide depolanır.

<!-- 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>

Birden çok başlık aynı ada sahipse dizi:

<Header name="myHeader.2">
   <Pattern ignoreCase="true">{secondHeader}</Pattern>
</Header>

Dizideki tüm üstbilgileri listelemek için şunu da yapabilirsiniz:

<Header name="myHeader.values">
   <Pattern ignoreCase="true">{myHeaders}</Pattern>
</Header>
Varsayılan: Yok
Bulunma: İsteğe bağlı. Ancak, aşağıdakilerden en az birini eklemeniz gerekir: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> veya <XMLPayload>.
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
ad Değeri ayıkladığınız üstbilginin adını belirtir. Birden fazla aynı ada sahip olduğundan, dizine eklenmiş referansı kullanın. Bu durumda, üçüncü başlık dizin 2'de, üçüncüsü indeks 3'te vb. bulunur. Dizideki tüm üstbilgileri almak için .values.

Yok

Zorunlu Dize

&lt;FormParam&gt; öğe

(İsteğe bağlı ancak daha fazla bilgi için aşağıdaki tabloda bulunan Durum satırına bakın.) Değer çıkarır Belirtilen request veya response mesajının belirtilen form parametresinden. Form parametreleri yalnızca belirtilen iletinin Content-Type üstbilgisi şu olduğunda çıkarılabilir: application/x-www-form-urlencoded.

<FormParam name="greeting">
    <Pattern>hello {user}</Pattern>
</FormParam>
Varsayılan: Yok
Bulunma: İsteğe bağlı. Ancak, aşağıdakilerden en az birini eklemeniz gerekir: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> veya <XMLPayload>.
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
ad Değeri çıkardığınız form parametresinin adı.

Yok

Zorunlu Dize

&lt;Variable&gt; öğe

(İsteğe bağlı ancak daha fazla bilgi için aşağıdaki tabloda bulunan Durum satırına bakın.) değer ayıklanacak değişkenin adı.

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

Değişkenden iki değer çıkarmak için:

<Variable name="myVar">
   <Pattern>hello {firstName} {lastName}</Pattern>
</Variable>
Varsayılan: Yok
Bulunma: İsteğe bağlı. Ancak, aşağıdakilerden en az birini eklemeniz gerekir: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> veya <XMLPayload>.
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
ad Değerin alınacağı değişkenin adı.

Yok

Zorunlu Dize

&lt;JSONPayload&gt; öğe

(İsteğe bağlı ancak daha fazla bilgi için aşağıdaki tabloda bulunan Durum satırına bakın.) Değişken değerinin çıkarılacağı JSON biçimli mesaj. JSON ayıklama işlemi yalnızca iletinin Content-Type üstbilgisi application/json olduğunda gerçekleştirilir.

<JSONPayload>
   <Variable name="name" type="string">
      <JSONPath>{example}</JSONPath>
   </Variable>
</JSONPayload>
Varsayılan: Yok
Bulunma: İsteğe bağlı. Ancak, aşağıdakilerden en az birini eklemeniz gerekir: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> veya <XMLPayload>.
Tür: Yok

&lt;JSONPayload&gt;/&lt;Variable&gt; öğe

(JSONPayload öğesi içinde gerekli.) Çıkarılan değerin olduğu değişkeni belirtir atanır. Doldurmak için &lt;Variable&gt; öğesine birden fazla &lt;Variable&gt; etiketi ekleyebilirsiniz kullanabilirsiniz.

<Variable name="name" type="string">
   <JSONPath>{example}</JSONPath>
</Variable>
Varsayılan: Yok
Bulunma: JSONPayload öğesi içinde gereklidir.
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
ad

Çıkarılan değerin olacağı değişkenin adını belirtir atanır.

ad

Zorunlu Dize
tür Değişken değerinin veri türünü belirtir. Yok İsteğe bağlı

Dize. Şunlar arasından seçim yapın:

  • dize
  • boolean
  • tam sayı
  • uzun
  • kayan noktalı
  • double
  • düğüm kümesi (JSON parçasını döndürür)

&lt;JSONPayload&gt;/&lt;Variable&gt;/&lt;JSONPath&gt; öğe

(JSONPayload:Variable öğesinde gereklidir.) Bir dosyayı ayıklamak için kullanılan JSON yolunu değeri JSON biçimli bir mesajdan alınır.

<Variable name="name">
   <JSONPath>$.rss.channel.title</JSONPath>
</Variable>
Varsayılan: Yok
Bulunma: Zorunlu
Tür: Dize

&lt;XMLPayload&gt; öğe

(İsteğe bağlı ancak daha fazla bilgi için aşağıdaki tabloda bulunan Durum satırına bakın.) Değişken değerinin çıkarılacağı XML biçimli mesaj. XML yükleri iletinin Content-Type üstbilgisi yalnızca iletinin - text/xml, application/xml, veya 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>
Varsayılan: Yok
Bulunma: İsteğe bağlı. Ancak, aşağıdakilerden en az birini eklemeniz gerekir: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> veya <XMLPayload>.
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
stopPayloadProcessing

Bir değişken doldurulduktan sonra XPath değerlendirmesini durdurmak için true olarak ayarlayın. Yani politika yalnızca tek bir değişkeni doldurur.

false

İsteğe bağlı Boole

&lt;XMLPayload&gt;/&lt;Namespaces&gt; öğe

(İsteğe bağlı) XPath değerlendirmesinde kullanılacak ad alanını belirtir. Şunu kullanıyorsanız: ad alanlarını oluşturmak istiyorsanız, örneği inceleyelim.

<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 ifadelerinizde ad alanları kullanmıyorsanız <Namespaces> öğesi, aşağıdaki örnekte gösterildiği gibi:

<XMLPayload stopPayloadProcessing="false">
  <!-- <Namespaces/> -->
  <Variable name="legName" type="string">
    <XPath>/Directions/route/leg/name</XPath>
  </Variable>
</XMLPayload>
Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür: Dize

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
prefix

Ad alanı öneki.

Yok

Zorunlu Dize

&lt;XMLPayload&gt;/&lt;Variable&gt; öğe

(İsteğe bağlı) Çıkarılan değerin atanacağı değişkeni belirtir.

<Variable name="name" type="boolean">
   <XPath>/test/example</XPath>
</Variable>
Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
ad

Çıkarılan değerin olacağı değişkenin adını belirtir atanır.

ad

Zorunlu Dize
tür Değişken değerinin veri türünü belirtir. Boole İsteğe bağlı

Dize. Şunlar arasından seçim yapın:

  • dize
  • boolean
  • tam sayı
  • uzun
  • kayan noktalı
  • double
  • düğüm kümesi (bir XML parçası döndürür)

&lt;XMLPayload&gt;/&lt;Variable&gt;/&lt;XPath&gt; öğe

(XMLPayload:Variable öğesi içinde gereklidir.) Şu öğe için tanımlanan XPath'i belirtir: değişkenine eklenmelidir. Yalnızca XPath 1.0 ifadeleri desteklenir.

<Variable name="name" type="boolean">
   <XPath>/test/example</XPath>
</Variable>

Ad alanı içeren örnek. XPath ifadelerinizde ad alanları kullanıyorsanız şunu bildirmeniz gerekir: <XMLPayload><Namespaces> bölümündeki ad alanları daha fazla bilgi edineceksiniz.

<Variable name="name" type="boolean">
   <XPath>/foo:test/foo:example</XPath>
</Variable>
Varsayılan: Yok
Bulunma: Zorunlu
Tür: Dize

Hata referansı

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.extractvariables.ExecutionFailed 500

This error occurs when:

  • The input payload (JSON, XML) is empty.
  • The input (JSON, XML, etc) passed to the policy is invalid or malformed.
steps.extractvariables.ImmutableVariable 500 A variable used in the policy is immutable. The policy was unable to set this variable.
steps.extractvariables.InvalidJSONPath 500 This error occurs if an invalid JSON path is used in the JSONPath element of the policy. For example, if a JSON payload does not have the object Name, but you specify Name as the path in the policy, then this error occurs.
steps.extractvariables.JsonPathParsingFailure 500 This error occurs when the policy is unable to parse a JSON path and extract data from the flow variable specified in Source element. Typically this happens if the flow variable specified in the Source element does not exist in the current flow.
steps.extractvariables.SetVariableFailed 500 This error occurs if the policy could not set the value to a variable. The error generally happens if you try to assign values to multiple variables whose names start with the same words in a nested dot-separated format.
steps.extractvariables.SourceMessageNotAvailable 500 This error occurs if the message variable specified in the Source element of the policy is either:
  • Out of scope (not available in the specific flow where the policy is being executed) or
  • Can't be resolved (is not defined)
steps.extractvariables.UnableToCast 500 This error occurs if the policy was unable to cast the extracted value to a variable. Typically this happens if you attempt to set the value of one data type to a variable of another data type.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
NothingToExtract If the policy does not have any of the elements URIPath, QueryParam, Header, FormParam, XMLPayload, or JSONPayload, the deployment of the API Proxy fails, because there's nothing to extract.
NONEmptyPrefixMappedToEmptyURI This error occurs if the policy has a prefix defined in the Namespace element under the XMLPayload element, but no URI is defined.
DuplicatePrefix This error occurs if the policy has the same prefix defined more than once in the Namespace element under the XMLPayload element.
NoXPathsToEvaluate If the policy does not have the XPath element within the XMLPayload element, then the deployment of the API proxy fails with this error.
EmptyXPathExpression If the policy has an empty XPath expression within the XMLPayload element, then the deployment of the API proxy fails.
NoJSONPathsToEvaluate If the policy does not have the JSONPath element within the JSONPayload element, then the deployment of the API proxy fails with this error.
EmptyJSONPathExpression If the policy has an empty XPath expression within the XMLPayload element, then the deployment of the API proxy fails.
MissingName If the policy does not have the name attribute in any of the policy elements like QueryParam, Header, FormParam or Variable, where it is required, then the deployment of the API proxy fails.
PatternWithoutVariable If the policy does not have a variable specified within the Pattern element, then the deployment of the API proxy fails. The Pattern element requires the name of the variable in which extracted data will be stored.
CannotBeConvertedToNodeset If the policy has an XPath expression where the Variable type is defined as nodeset, but the expression cannot be converted to nodeset, then the deployment of the API proxy fails.
JSONPathCompilationFailed The policy could not compile a specified JSON Path.
InstantiationFailed The policy could not be instantiated.
XPathCompilationFailed If the prefix or the value used in the XPath element is not part of any of the declared namespaces in the policy, then the deployment of the API proxy fails.
InvalidPattern If the Pattern element definition is invalid in any of the elements like URIPath, QueryParam, Header, FormParam, XMLPayload or JSONPayload within the policy, then the deployment of the API proxy fails.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "SourceMessageNotAvailable"
extractvariables.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. extractvariables.EV-ParseJsonResponse.failed = true

Example error response

{
   "fault":{
      "detail":{
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse"
   }
}

Example fault rule

<FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name = "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition>
</FaultRule>

Şemalar

İlgili konular

Analiz API'si Özel analizler kullanarak mesaj içeriği

Değişkenler referansı