kebijakan ExtractVariables

Anda sedang melihat dokumentasi Apigee Edge.
Buka Dokumentasi Apigee X.
info

Apa

Kebijakan ExtractVariables mengekstrak konten dari permintaan atau respons dan menetapkan nilai variabel untuk konten tersebut. Anda dapat mengekstrak bagian mana pun dari pesan, termasuk header, jalur URI, payload JSON/XML, formulir parameter, dan parameter kueri. Kebijakan ini berfungsi dengan menerapkan pola teks ke pesan dan, setelah menemukan kecocokan, menyetel variabel dengan isi pesan yang ditentukan.

Meskipun Anda sering menggunakan kebijakan ini untuk mengekstrak informasi dari pesan permintaan atau respons, Anda juga dapat menggunakannya untuk mengekstrak informasi dari sumber lain, termasuk entitas yang dibuat oleh kebijakan AccessEntity, Objek XML, atau objek JSON.

Setelah mengekstrak isi pesan tertentu, Anda bisa merujuk variabel tersebut di kebijakan sebagai bagian dari pemrosesan permintaan dan respons.

Video

Tonton video berikut untuk mempelajari lebih lanjut kebijakan ExtractVariables.

Video Deskripsi
Mengekstrak variabel dari payload XML Ekstrak variabel dari payload XML menggunakan kebijakan Ekstrak Variabel.
Mengekstrak variabel dari payload JSON Ekstrak variabel dari payload JSON menggunakan kebijakan Ekstrak Variabel.
Mengekstrak variabel dari parameter Ekstrak variabel dari parameter, seperti parameter kueri, header, formulir, atau URI.
Mengekstrak variabel dari parameter multi-nilai Ekstrak variabel dari parameter multi-nilai.
Mengekstrak variabel dari parameter kueri (Edge Klasik) Ekstrak variabel dari parameter kueri menggunakan UI Classic Edge.
Mengekstrak variabel dari payload XML atau JSON (Edge Klasik) Ekstrak variabel dari payload XML atau JSON menggunakan UI Classic Edge.

Contoh

Contoh kode kebijakan ini menggambarkan cara mengekstrak variabel dari jenis artefak:

GitHub

Link ini mengarah ke contoh proxy API yang berfungsi dan dapat Anda deploy dan jalankan di Edge. Mereka gunakan ExtractVariables dan berada di repositori api-platform-samples Apigee di GitHub. README menjelaskan bagaimana ExtractVariables digunakan dalam setiap kasus, serta cara men-deploy dan menjalankan setiap sampel.

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>

Pertimbangkan contoh kode kebijakan di atas. Elemen <URIPath> memberi tahu Kebijakan ExtractVariables untuk mengekstrak informasi dari jalur URI. Tujuan Elemen <Pattern> menentukan pola yang akan diterapkan ke jalur URI. Tujuan pola diperlakukan sebagai template sederhana, dengan tanda kurung kurawal menunjukkan bagian yang bervariasi jalur URI.

Nama variabel yang akan ditetapkan ditentukan oleh nilai yang ditentukan dalam elemen <VariablePrefix>, serta nilai yang diapit tanda kurung kurawal {} dalam elemen <Pattern>. Kedua nilai ini digabungkan dengan titik intervensi, misalnya, menghasilkan nama variabel urirequest.id. Jika tidak ada <VariablePrefix>, maka nama variabel hanya nilainya diapit oleh tanda kurung kurawal.

Pertimbangkan contoh kode kebijakan di atas yang berfungsi dengan permintaan masuk berikut:

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

Misalkan jalur dasar untuk Proxy API adalah /svc1. Saat Apigee Edge menerapkan Kode kebijakan ExtractVariables di atas untuk permintaan masuk ini, yang menyetel variabel urirequest.id hingga 12797282. Setelah Apigee Edge mengeksekusi kebijakan, kebijakan atau kode berikutnya dalam alur pemrosesan dapat merujuk ke variabel bernama urirequest.id untuk mendapatkan nilai string 12797282.

Misalnya, kebijakan MenetapkanMessage berikut menyematkan nilai variabel tersebut ke dalam payload pesan permintaan baru:

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

Parameter kueri

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

Pertimbangkan contoh kode kebijakan di atas yang berfungsi dengan permintaan masuk berikut:

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

Ketika Apigee Edge menerapkan kode kebijakan ExtractVariables di atas untuk permintaan masuk ini, kode ini menetapkan variabel queryinfo.dbncode ke 88271. Setelah Apigee Edge mengeksekusi kebijakan, kebijakan atau kode berikutnya dalam alur pemrosesan dapat merujuk pada variabel bernama queryinfo.dbncode untuk mendapatkan nilai string 88271.

Sekarang Anda dapat mengakses variabel queryinfo.dbncode di proxy Anda. Misalnya, kebijakan MenetapkanMessage berikut menyalinnya ke payload permintaan:

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

Beberapa parameter

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

Misalkan desain API Anda memungkinkan Anda menetapkan beberapa parameter kueri dengan nama. Anda dapat menggunakan kebijakan ini untuk mengekstrak nilai beberapa instance kueri parameter "w". Untuk mereferensikan parameter kueri ini di kebijakan ExtractVariables, menggunakan indeks, di mana contoh pertama dari parameter kueri tidak memiliki indeks, yang kedua berada pada indeks 2, yang ketiga pada indeks 3, dst.

Pertimbangkan contoh kode kebijakan di atas yang berfungsi dengan permintaan masuk berikut:

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

Ketika Apigee Edge menerapkan kode kebijakan ExtractVariables di atas untuk permintaan masuk ini, kode akan menetapkan variabel queryinfo.firstWeather ke Boston dan variabel queryInfo.secondWeather hingga Chicago.

Anda sekarang dapat mengakses variabel queryinfo.firstWeather dan queryinfo.secondWeather dalam {i>proxy<i} Anda. Misalnya, kebijakan MenetapkanMessage berikut menyalinnya ke payload permintaan:

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

Header

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

Misalkan API Anda menggunakan token pemilik OAuth v2.0. Pertimbangkan contoh kode kebijakan di atas bekerja dengan permintaan yang membawa token OAuth v2.0 yang mencakup header seperti ini: Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.

Sebagai desainer API, anggaplah Anda ingin menggunakan nilai token (tetapi bukan seluruh header) sebagai kunci dalam pencarian cache. Anda dapat menggunakan kode kebijakan ExtractVariables di atas untuk mengekstrak token.

Saat Apigee Edge menerapkan kode kebijakan ExtractVariables di atas ke header ini, Apigee akan setel variabel clientrequest.oauthtoken ke TU08xptfFfeM7aS0xHqlxTgEAdAM.

Anda sekarang dapat mengakses variabel clientrequest.oauthtoken di {i>proxy<i}. Misalnya, kebijakan MenetapkanMessage berikut menyalinnya ke payload permintaan:

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

Pertimbangkan payload respons JSON berikut:

{
  "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
        }
      }
    }
  }]
}

Ketika Apigee Edge menerapkan kode kebijakan ExtractVariables di atas ke pesan JSON ini, menetapkan dua variabel: geocoderesponse.latitude dan geocoderesponse.longitude. Kedua variabel menggunakan awalan variabel yang sama, geocoderesponse. Akhiran untuk variabel ini ditentukan secara eksplisit oleh Atribut name milik elemen <Variable>.

Variabel geocoderesponse.latitude mendapatkan nilai 37.42291810. Variabel geocoderesponse.longitude mendapatkan nilai -122.08542120.

Anda sekarang dapat mengakses variabel geocoderesponse.latitude di {i>proxy<i}. Misalnya, kebijakan MenetapkanMessage berikut menyalinnya ke header bernama "latitude" dalam responsnya:

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

Pertimbangkan payload respons XML berikut:

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

Saat Apigee Edge menerapkan kode kebijakan ExtractVariables di atas ke pesan XML ini, maka menetapkan tiga variabel: directionsresponse.travelmode, directionsresponse.duration, dan directionsresponse.timeunit. Semua variabel menggunakan awalan variabel yang sama dari directionsresponse. Akhiran untuk variabel ini ditetapkan secara eksplisit oleh elemen <Variable> Atribut name.

Variabel directionsresponse.travelmode mendapatkan nilai DRIVING. Variabel directionsresponse.duration mendapatkan nilai 19. Variabel directionsresponse.timeunit mendapatkan nilai minutes.

Anda sekarang dapat mengakses variabel directionresponse.travelmode di {i>proxy<i} Anda. Misalnya, kebijakan MenetapkanMessage berikut menyalinnya ke header yang diberi nama "tmode" dalam responsnya:

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

Tentang kebijakan ExtractVariables

Developer API membuat proxy API yang berperilaku berbeda berdasarkan konten pesan, termasuk header, jalur URI, payload, dan parameter kueri. Sering kali, {i>proxy<i} mengekstrak beberapa bagian dari konten ini untuk digunakan dalam pernyataan kondisi. Gunakan kebijakan ExtractVariables untuk melakukan ini.

Saat menentukan kebijakan ExtractVariables, Anda dapat memilih:

  • Nama variabel yang akan ditetapkan
  • Sumber variabel
  • Berapa banyak variabel yang akan diekstrak dan ditetapkan

Ketika dieksekusi, kebijakan akan menerapkan pola teks ke konten dan, setelah menemukan kecocokan, nilai variabel yang ditentukan dengan konten. Kebijakan dan kode lain kemudian dapat memakai variabel tersebut untuk mengaktifkan perilaku dinamis atau untuk mengirim data bisnis ke Analisis Edge API.

Untuk melihat bagaimana ExtractVariables dapat digunakan untuk membuat laporan Analytics berbasis konten, lihat Analisis Konten pesan API menggunakan analisis kustom.

Cakupan

Variabel yang ditetapkan dengan kebijakan ExtractVariables memiliki cakupan global. Yaitu, setelah Kebijakan ExtractVariables menentukan variabel baru. Anda dapat mengakses variabel itu dari kebijakan atau kode di tahap mana pun dalam alur (yang dieksekusi setelah kebijakan ExtractVariables). Ini mencakup:

  • PreFlow: ProxyEndpoint dan TargetEndpoint (Permintaan dan Respons)
  • PostFlow: ProxyEndpoint dan TargetEndpoint (Permintaan dan Respons)
  • PostClientFlow: ProxyEndpoint (Hanya respons, menggunakan Kebijakan Logging Pesan)
  • Alur Error

Tentang pencocokan dan pembuatan variabel

Kebijakan ExtractVariables mengekstrak informasi dari permintaan atau respons dan menulis yang informasi ke variabel. Untuk setiap jenis informasi yang dapat Anda ekstrak, seperti jalur URI atau data XML, tentukan pola yang akan dicocokkan dan nama variabel yang digunakan untuk menyimpan informasi yang diekstraksi.

Namun, cara kerja pencocokan pola bergantung pada sumber ekstraksi. Hal berikut menjelaskan dua kategori dasar informasi yang dapat Anda ekstrak.

Mencocokkan jalur URI, parameter kueri, header, parameter formulir, dan variabel

Saat mengekstrak informasi dari jalur URI, parameter kueri, header, parameter formulir, dan variabel yang Anda gunakan tag &lt;Pattern&gt; untuk menentukan satu atau beberapa pola yang sesuai. Misalnya, contoh kebijakan berikut menunjukkan satu pola yang cocok untuk jalur URI:

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

Dalam contoh ini, variabel urirequest.pathSeg ditetapkan ke apa pun yang muncul di {i>proxy.pathsuffix<i} setelah "/a/". Misalnya, jalur dasar untuk Proxy API Anda adalah /basepath/v1 . Dengan permintaan masuk ke http://myCo.com/basepath/v1/a/b variabel diatur ke "{i>b<i}".

Menentukan beberapa pola

Anda dapat menentukan beberapa pola untuk dicocokkan, sesuai dengan tag &lt;Pattern&gt;, dengan:

  • Semua pola akan diuji kecocokannya.
  • Jika tidak ada pola yang cocok, kebijakan tidak melakukan apa pun dan variabelnya tidak dibuat.
  • Jika ada lebih dari satu pola yang cocok, pola dengan segmen jalur terpanjang akan digunakan untuk ekstraksi data.
  • Jika dua pola yang cocok memiliki segmen jalur terpanjang yang sama, berarti pola yang ditentukan terlebih dahulu di kebijakan digunakan untuk ekstraksi.

Pada contoh berikutnya, Anda akan membuat kebijakan yang berisi tiga pola yang cocok untuk URI jalur:

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

Misalkan, untuk Proxy API dengan jalur dasar /basepath/v1 , URL permintaan masuk ke proxy API berbentuk seperti ini:

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

Dalam contoh ini, pola pertama cocok dengan URI dan variabel urirequest.pathSeg adalah tetapkan ke "b".

Jika URL permintaan adalah:

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

...maka pola ketiga cocok dan variabel urirequest.pathSeg menjadi tetapkan ke "d".

Menentukan pola dengan beberapa variabel

Anda dapat menentukan beberapa variabel dalam pola yang cocok. Misalnya, Anda menentukan pola yang sesuai dengan dua variabel:

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

Sekali lagi , jadikan Proxy API dengan jalur dasar /basepath/v1 untuk permintaan masuk URL:

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

...variabel urirequest.pathSeg1 menjadi tetapkan ke "b" dan variabel urirequest.pathSeg2 menjadi tetapkan ke "d".

Mencocokkan beberapa instance dalam pola

Anda juga dapat mencocokkan pola jika ada beberapa item dengan nama yang sama. Misalnya, Anda dapat membuat permintaan yang berisi beberapa parameter kueri atau beberapa header dengan nama yang sama. Permintaan berikut berisi dua parameter kueri yang bernama "w":

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

Untuk mereferensikan parameter kueri ini di kebijakan ExtractVariables, gunakan indeks, dengan instance pertama dari parameter kueri tidak memiliki indeks, yang kedua adalah pada indeks 2, yang ketiga berada indeks 3, dst. Misalnya, kebijakan berikut mengekstrak nilai parameter kueri kedua bernama "w" dalam permintaan:

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <QueryParam name="w.2">
      <Pattern ignoreCase="true">{secondW}</Pattern>
   </QueryParam>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

Variabel urirequest.secondW adalah tetapkan ke "2". Jika parameter kueri kedua dihilangkan dari permintaan, maka variabel urirequest.secondW akan kosong. Gunakan pengindeksan setiap kali ada beberapa item dengan nama yang sama dalam permintaan.

Menggunakan karakter khusus dalam pola

Saat mencocokkan jalur URI, Anda dapat menggunakan "*" dan "**" karakter pengganti di pola, dalam hal ini:

  • "*" cocok dengan salah satu segmen jalur
  • "**" cocok dengan beberapa segmen jalur

Misalnya, Anda menentukan pola ke elemen &lt;URIPath&gt; seperti yang ditunjukkan di bawah ini:

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

Pola pertama mencocokkan permintaan dengan pathuffix (bagian dari jalur URI setelah jalur dasar) seperti "/a/b/c", "/a/foo/bar", dll. Pola kedua cocok dengan sejumlah jalur segmen setelah "/a/", seperti "/a/foo/bar/baz/c", serta "/a/b/c" dan "/a/foo/bar".

Saat menentukan pola untuk mengkueri parameter, header, dan parameter formulir, karakter "*" tentukan untuk mencocokkan sejumlah karakter. Misalnya, saat mencocokkan {i>header<i}, tentukan sebagai:

*;charset={encoding}

Pola ini cocok dengan nilai "text/xml;charset=UTF-16" dan "application/xml;charset=ASCII".

Jika nilai yang diteruskan ke kebijakan ExtractVariables berisi karakter khusus, seperti "{", gunakan "%" yang tepat untuk meng-escapenya. Contoh berikut meng-escape "{" dan "}" karakter dalam pola karena mereka digunakan sebagai karakter literal dalam nilai kueri :

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

Dalam contoh ini, polanya cocok dengan nilai "{user} Steve" tapi bukan nilai "{i>user<i} Steve".

Mencocokkan JSON dan XML

Saat mengekstrak data dari JSON dan XML, tentukan satu atau beberapa tag &lt;Variable&gt; di kebijakan. Tag &lt;Variable&gt; menentukan nama variabel tujuan tempat informasi yang diekstrak disimpan, dan JsonPath (JSON) atau XPATH (XML) ke informasi yang diekstrak.

Semua tag &lt;Variable&gt; dalam kebijakan dievaluasi, sehingga Anda dapat mengisi beberapa variabel dari satu kebijakan. Jika tag &lt;Variable&gt; tidak ke bidang yang valid dalam JSON atau XML, maka variabel yang sesuai tidak dibuat.

Contoh berikut menunjukkan kebijakan ExtractVariables yang mengisi dua variabel dari Isi respons 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>

Menulis ke variabel yang sama di beberapa tempat

Berhati-hatilah saat memilih nama variabel yang akan ditetapkan. Kebijakan dijalankan secara berurutan dari dari pola ekstraksi pertama hingga terakhir. Jika kebijakan menulis nilai ke variabel yang sama dari beberapa tempat, penulisan terakhir dalam kebijakan menentukan nilai variabel. (Ini mungkin yang diinginkan.)

Misalnya, Anda ingin mengekstrak nilai token yang dapat diteruskan dalam parameter kueri atau di header, seperti yang ditunjukkan di bawah ini:

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

Mengontrol apa yang terjadi jika tidak ada kecocokan

Jika pola tidak cocok, variabel yang sesuai tidak dibuat. Oleh karena itu, jika kebijakan lain merujuk ke variabel tersebut, maka itu dapat menyebabkan kesalahan.

Salah satu opsinya adalah menetapkan <IgnoreUnresolvedVariables> ke benar dalam kebijakan yang mereferensikan variabel untuk mengonfigurasi kebijakan yang akan variabel yang tidak dapat diselesaikan sebagai string kosong (null):

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>

Referensi elemen

Referensi elemen menjelaskan elemen dan atribut ExtractVariables lebih lanjut.

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

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

Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:

Atribut Deskripsi Default Ketersediaan
name

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Secara opsional, gunakan elemen <DisplayName> untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural language yang berbeda.

T/A Wajib
continueOnError

Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Diharapkan untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur dapat dilanjutkan bahkan setelah kebijakan gagal.

salah Opsional
enabled

Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk menonaktifkan kebijakan. Kebijakan ini tidak akan ditegakkan meskipun tetap terikat pada alur.

true Opsional
async

Atribut ini tidak digunakan lagi.

salah Tidak digunakan lagi

&lt;DisplayName&gt; elemen

Gunakan selain atribut name untuk memberi label kebijakan di editor proxy UI dengan nama natural language yang berbeda.

<DisplayName>Policy Display Name</DisplayName>
Default

T/A

Jika Anda menghapus elemen ini, nilai atribut name kebijakan akan menjadi data

Ketersediaan Opsional
Jenis String

&lt;Source&gt; elemen

(Opsional) Menentukan variabel yang akan diuraikan. Nilai dari <Source> ditetapkan secara default ke message. Nilai message peka konteks. Dalam alur permintaan, message me-resolve ke pesan permintaan. Di beberapa alur respons, message akan me-resolve ke pesan respons.

Meskipun Anda sering menggunakan kebijakan ini untuk mengekstrak informasi dari pesan permintaan atau respons, Anda dapat menggunakannya untuk mengekstrak informasi dari variabel apa pun. Misalnya, Anda dapat menggunakannya untuk mengekstrak informasi dari entitas yang dibuat oleh kebijakan AccessEntity, dari data dikembalikan oleh layanan Service Kebijakan info, atau ekstrak informasi dari objek XML atau JSON.

Jika <Source> tidak dapat di-resolve, atau di-resolve menjadi jenis bukan pesan, kebijakan akan gagal direspons.

<Source clearPayload="true|false">request</Source>
Default: pesan
Kehadiran: Opsional
Jenis: String

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
clearPayload

Tetapkan ke true jika Anda ingin menghapus payload yang ditentukan di &lt;Source&gt; setelah mengekstrak data darinya.

Gunakan opsi <clearPayload> hanya jika pesan sumbernya bukan diperlukan setelah ExtractVariables dieksekusi. Menyetel ke true akan mengosongkan ruang memori yang digunakan oleh pesan.

salah

Opsional Boolean

&lt;VariablePrefix&gt; elemen

(Opsional) Nama lengkap variabel dibuat dengan menggabungkan <VariablePrefix>, titik, dan nama yang Anda tetapkan dalam {tanda kurung kurawal} di Elemen <Pattern> atau elemen &lt;Variable&gt;. Contoh: myprefix.id, myprefix.dbncode, atau myprefix.oauthtoken.

<VariablePrefix>myprefix</VariablePrefix>

Misalnya, nilai nama adalah "user".

  • Jika <VariablePrefix> tidak ditentukan, nilai yang diekstrak akan ditetapkan ke variabel bernama user.
  • Jika <VariablePrefix> ditentukan sebagai myprefix, nilai yang diekstrak nilai ditetapkan ke variabel bernama myprefix.user.
Default: T/A
Kehadiran: Opsional
Jenis: String

&lt;IgnoreUnresolvedVariables&gt; elemen

(Opsional) Tetapkan ke true untuk memperlakukan variabel yang tidak dapat diselesaikan sebagai string kosong (null). Tetapkan ke false jika Anda ingin kebijakan menampilkan error saat ada yang direferensikan variabel tidak dapat diselesaikan.

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Default: Salah
Kehadiran: Opsional
Jenis: Boolean

Jika referensi XPath tidak terselesaikan dalam <XMLPayload>, kebijakan akan menampilkan error berikut:

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

&lt;URIPath&gt; elemen

(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Mengekstrak nilai dari proxy.pathsuffix dari pesan sumber request. Jalur yang diterapkan ke polanya adalah proxy.pathsuffix, yang tidak menyertakan jalur dasar untuk Proxy API. Jika pesan sumber menghasilkan jenis pesan response, maka elemen ini tidak melakukan apa pun.

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

Anda dapat menggunakan beberapa elemen &lt;Pattern&gt;:

<URIPath>
   <Pattern ignoreCase="false">/accounts/{id}</Pattern>
   <Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern>
</URIPath>
Default: T/A
Kehadiran: Opsional. Namun, Anda harus menyertakan minimal salah satu hal berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, atau <XMLPayload>.
Jenis: T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
ignoreCase Menentukan untuk mengabaikan huruf besar/kecil saat mencocokkan pola.

salah

Opsional Boolean

&lt;QueryParam&gt; elemen

(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Mengekstrak nilai dari parameter kueri yang ditentukan pada pesan sumber request. Jika pesan sumber me-resolve ke jenis pesan response, maka elemen ini melakukannya tidak terjadi apa-apa.

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

Jika beberapa parameter kueri memiliki nama yang sama, gunakan indeks untuk mereferensikan parameter:

<QueryParam name="w.2">
   <Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>
Default: T/A
Kehadiran: Opsional. Namun, Anda harus menyertakan minimal salah satu hal berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, atau <XMLPayload>.
Jenis: T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
nama Menentukan nama parameter kueri. Jika beberapa parameter kueri memiliki sama, gunakan referensi terindeks, yang menunjukkan tidak memiliki indeks, yang kedua berada pada indeks 2, yang ketiga pada indeks 3, dst.

T/A

Wajib String

&lt;Header&gt; elemen

(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Mengekstrak nilai dari header HTTP yang ditentukan untuk pesan request atau response yang ditentukan. Jika beberapa {i>header <i}memiliki dengan nama yang sama, nilainya disimpan dalam sebuah {i>array<i}.

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

Jika beberapa {i>header<i} memiliki nama yang sama, gunakan indeks untuk mereferensikan masing-masing {i>header<i} di array:

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

Atau perintah berikut untuk menampilkan semua header dalam array:

<Header name="myHeader.values">
   <Pattern ignoreCase="true">{myHeaders}</Pattern>
</Header>
Default: T/A
Kehadiran: Opsional. Namun, Anda harus menyertakan minimal salah satu hal berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, atau <XMLPayload>.
Jenis: T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
nama Menentukan nama header tempat Anda mengekstrak nilai. Jika lebih dari satu memiliki nama yang sama, gunakan {i>index.<i} yang diindeks, di mana instance pertama header tidak memiliki indeks, yang kedua adalah pada indeks 2, yang ketiga pada indeks 3, dst. .values untuk mendapatkan semua header dalam array.

T/A

Wajib String

&lt;FormParam&gt; elemen

(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Mengekstrak nilai dari parameter formulir yang ditentukan untuk pesan request atau response yang ditentukan. Parameter formulir hanya dapat diekstrak jika header Content-Type dari pesan yang ditentukan application/x-www-form-urlencoded.

<FormParam name="greeting">
    <Pattern>hello {user}</Pattern>
</FormParam>
Default: T/A
Kehadiran: Opsional. Namun, Anda harus menyertakan minimal salah satu hal berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, atau <XMLPayload>.
Jenis: T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
nama Nama parameter formulir tempat Anda mengekstrak nilai.

T/A

Wajib String

&lt;Variable&gt; elemen

(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Menentukan atribut nama variabel yang akan digunakan untuk mengekstrak nilai.

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

Untuk mengekstrak dua nilai dari variabel:

<Variable name="myVar">
   <Pattern>hello {firstName} {lastName}</Pattern>
</Variable>
Default: T/A
Kehadiran: Opsional. Namun, Anda harus menyertakan minimal salah satu hal berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, atau <XMLPayload>.
Jenis: T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
nama Nama variabel yang digunakan untuk mengekstrak nilai.

T/A

Wajib String

&lt;JSONPayload&gt; elemen

(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Menentukan atribut Pesan berformat JSON yang menjadi asal dari nilai variabel yang akan diekstrak. JSON ekstraksi hanya dilakukan jika header Content-Type pesan adalah application/json.

<JSONPayload>
   <Variable name="name" type="string">
      <JSONPath>{example}</JSONPath>
   </Variable>
</JSONPayload>
Default: T/A
Kehadiran: Opsional. Namun, Anda harus menyertakan minimal salah satu hal berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, atau <XMLPayload>.
Jenis: T/A

&lt;JSONPayload&gt;/&lt;Variable&gt; elemen

(Wajib dalam elemen JSONPayload.) Menentukan variabel tempat nilai yang diekstrak ditugaskan. Anda dapat menyertakan beberapa tag &lt;Variable&gt; di elemen &lt;Variable&gt; untuk diisi beberapa variabel.

<Variable name="name" type="string">
   <JSONPath>{example}</JSONPath>
</Variable>
Default: T/A
Kehadiran: Wajib dalam elemen JSONPayload.
Jenis: T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
nama

Menentukan nama variabel yang akan menjadi target nilai yang diekstrak ditugaskan.

nama

Wajib String
jenis Menentukan jenis data nilai variabel. T/A Opsional

String. Pilih dari:

  • string
  • boolean
  • bilangan bulat
  • long
  • float
  • double
  • nodeset (menampilkan fragmen JSON)

&lt;JSONPayload&gt;/&lt;Variable&gt;/&lt;JSONPath&gt; elemen

(Wajib dalam elemen JSONPayload:Variable.) Menentukan jalur JSON yang digunakan untuk mengekstrak dari pesan berformat JSON.

<Variable name="name">
   <JSONPath>$.rss.channel.title</JSONPath>
</Variable>
Default: T/A
Kehadiran: Wajib
Jenis: String

&lt;XMLPayload&gt; elemen

(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Menentukan atribut Pesan berformat XML tempat nilai variabel akan diekstrak. Payload XML diekstrak hanya jika header Content-Type pesan adalah text/xml, application/xml, atau 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>
Default: T/A
Kehadiran: Opsional. Namun, Anda harus menyertakan minimal salah satu hal berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, atau <XMLPayload>.
Jenis: T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
stopPayloadProcessing

Tetapkan ke true untuk menghentikan evaluasi XPath setelah satu variabel diisi. Artinya, hanya satu variabel yang diisi oleh kebijakan.

salah

Opsional Boolean

&lt;XMLPayload&gt;/&lt;Namespaces&gt; elemen

(Opsional) Menentukan namespace yang akan digunakan dalam evaluasi XPath. Jika Anda menggunakan dalam ekspresi XPath, Anda harus mendeklarasikan namespace di sini, seperti ditunjukkan contoh berikut.

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

Jika tidak menggunakan namespace dalam ekspresi XPath, Anda dapat menghilangkan atau menjadikan <Namespaces>, seperti yang ditunjukkan contoh berikut:

<XMLPayload stopPayloadProcessing="false">
  <!-- <Namespaces/> -->
  <Variable name="legName" type="string">
    <XPath>/Directions/route/leg/name</XPath>
  </Variable>
</XMLPayload>
Default: T/A
Kehadiran: Opsional
Jenis: String

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
prefix

Awalan namespace.

T/A

Wajib String

&lt;XMLPayload&gt;/&lt;Variable&gt; elemen

(Opsional) Menentukan variabel yang akan ditetapkan nilai yang diekstrak.

<Variable name="name" type="boolean">
   <XPath>/test/example</XPath>
</Variable>
Default: T/A
Kehadiran: Opsional
Jenis: T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
nama

Menentukan nama variabel yang akan menjadi target nilai yang diekstrak ditugaskan.

nama

Wajib String
jenis Menentukan jenis data nilai variabel. Boolean Opsional

String. Pilih dari:

  • string
  • boolean
  • bilangan bulat
  • long
  • float
  • double
  • nodeset (menampilkan fragmen XML)

&lt;XMLPayload&gt;/&lt;Variable&gt;/&lt;XPath&gt; elemen

(Wajib dalam elemen XMLPayload:Variable.) Menentukan XPath yang ditentukan untuk variabel. Hanya ekspresi XPath 1.0 yang didukung.

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

Contoh dengan namespace. Jika menggunakan namespace dalam ekspresi XPath, Anda harus mendeklarasikan namespace di bagian <XMLPayload><Namespaces> kebijakan.

<Variable name="name" type="boolean">
   <XPath>/foo:test/foo:example</XPath>
</Variable>
Default: T/A
Kehadiran: Wajib
Jenis: String

Referensi error

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>

Skema

Topik terkait

API Analisis konten pesan menggunakan analisis kustom

Referensi variabel