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ı

Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.

Çalışma zamanı hataları

Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.

Hata kodu HTTP durumu Neden Düzelt
steps.extractvariables.ExecutionFailed 500

Bu hata aşağıdaki durumlarda oluşur:

  • Giriş yükü (JSON, XML) boş.
  • Politikaya iletilen giriş (JSON, XML vb.) geçersiz veya hatalı biçimlendirilmiş.
steps.extractvariables.ImmutableVariable 500 Politikada kullanılan değişkenler sabittir. Politika bunu ayarlayamadı değişkenine eklenmelidir.
steps.extractvariables.InvalidJSONPath 500 Bu hata,JSONPath politikası. Örneğin, bir JSON yükü Name nesnesine sahip değilse ancak politikada yol olarak Name değerini belirtirseniz bu hata oluşur.
steps.extractvariables.JsonPathParsingFailure 500 Bu hata, politika bir JSON yolunu ayrıştıramadığında ve Source öğesinde belirtilen akış değişkeninden verileri ayıklayın. Genellikle bu Source öğesinde belirtilen akış değişkeninin geçerli öğede mevcut olmaması, akışı sağlar.
steps.extractvariables.SetVariableFailed 500 Bu hata, politika değeri bir değişkene ayarlayamadığında oluşur. Hata genellikle adları ile başlayan birden çok değişkene değer atamaya çalışırsanız aynı kelimeleri iç içe yerleştirilmiş ve noktayla ayrılmış biçimde yazın.
steps.extractvariables.SourceMessageNotAvailable 500 Bu hata, ileti politikanın Source öğesinde belirtilen değişken şunlardan biridir:
  • Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
  • Çözümlenemiyor (tanımlanmamış)
steps.extractvariables.UnableToCast 500 Bu hata, politika ayıklanan dosyayı bir değişkene dönüştürün. Bu genellikle bir veri türünü başka bir veri türünün değişkenine dönüştürebilirsiniz.

Dağıtım hataları

Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.

Hata adı Neden Düzelt
NothingToExtract Politikada URIPath, QueryParam, Header, FormParam, XMLPayload veya JSONPayload, çıkarılacak bir şey olmadığından API Proxy dağıtımı başarısız olur.
NONEmptyPrefixMappedToEmptyURI Bu hata, politikanın XMLPayload öğesinin altında Namespace öğesi var ancak URI yok tanımlanmıştır.
DuplicatePrefix Bu hata, politikada şundan daha fazla tanımlanmış aynı ön eke sahipse ortaya çıkar: XMLPayload öğesinin altındaki Namespace öğesinde bir kez.
NoXPathsToEvaluate PolitikanınXPath XMLPayload öğesi olursa API proxy'sinin dağıtımı bu hatayla başarısız olur.
EmptyXPathExpression Politikanın XMLPayload içinde boş bir XPath ifadesi varsa öğesini görürseniz API proxy'sinin dağıtımı başarısız olur.
NoJSONPathsToEvaluate PolitikanınJSONPath JSONPayload öğesi olursa API proxy'sinin dağıtımı bu hatayla başarısız olur.
EmptyJSONPathExpression PolitikanınXPath XMLPayload öğesi olursa API proxy'sinin dağıtımı başarısız olur.
MissingName Politikanın hiçbirinde name özelliği yoksa QueryParam, Header, FormParam veya Variable değerini alırsa API proxy'sinin dağıtımı başarısız olur.
PatternWithoutVariable Politikanın Pattern öğesi içinde belirtilmiş bir değişkeni yoksa API proxy'sinin dağıtımı başarısız olur. Pattern öğesi için şu ad gerekir: ayıklanan verilerin depolanacağı değişken.
CannotBeConvertedToNodeset Politika, Variable türünün olduğu bir XPath ifadesi içeriyorsa nodeset olarak tanımlanır ancak ifade düğüm kümesine dönüştürülemezse API proxy'sinin dağıtımı başarısız olur.
JSONPathCompilationFailed Politika, belirtilen bir JSON Yolu'nu derleyemedi.
InstantiationFailed Politika örneklenemedi.
XPathCompilationFailed XPath öğesinde kullanılan önek veya değer daha sonra API proxy'sinin dağıtımına izin verildikten sonra başarısız olur.
InvalidPattern URIPath gibi öğelerin herhangi birinde Pattern öğe tanımı geçersizse QueryParam, Header, FormParam, XMLPayload veya politika içinde JSONPayload, API proxy'si başarısız oldu.

Hata değişkenleri

Bu değişkenler, politika çalışma zamanında bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Ne, ne ve ne zaman bilmeniz gerekir.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name = "SourceMessageNotAvailable"
extractvariables.policy_name.failed policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. extractvariables.EV-ParseJsonResponse.failed = true

Örnek hata yanıtı

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

Örnek hata kuralı

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