Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
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 ExtractVariables 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.
Kebijakan ini merupakan Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin menimbulkan biaya atau implikasi penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.
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. |
Sampel
Contoh kode kebijakan ini menggambarkan cara mengekstrak variabel dari jenis artefak:
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://example.com/svc1/accounts/12797282
Misalkan jalur dasar untuk Proxy API adalah /svc1
. Saat Apigee menerapkan
Kode kebijakan ExtractVariables di atas untuk permintaan masuk ini, yang menyetel variabel
urirequest.id
hingga 12797282
. Setelah Apigee menjalankan kebijakan,
kebijakan atau kode berikutnya dalam alur pemrosesan dapat merujuk ke variabel bernama
urirequest.id
untuk mendapatkan nilai string 12797282
.
Misalnya, kebijakan Menetapkan Pesan berikut menyematkan nilai variabel tersebut ke dalam kolom 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://example.com/accounts/12797282?code=DBN88271
Jika Apigee menerapkan kode kebijakan ExtractVariables di atas untuk permintaan masuk ini,
kode ini menetapkan variabel queryinfo.dbncode
ke 88271
. Setelah Apigee
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 akan 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 ExtractVariables untuk mengekstrak nilai beberapa instance parameter kueri. Untuk mereferensikan parameter kueri dengan nama yang sama dalam kebijakan, menggunakan indeks di mana instance pertama dari parameter kueri tidak memiliki indeks, yang kedua adalah pada indeks 2, yang ketiga pada indeks 3, dan seterusnya.
Pertimbangkan contoh kode kebijakan di atas yang berfungsi dengan permintaan masuk berikut:
GET http://example.com/weather?w=Boston&w=Chicago
Jika Apigee 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
inci
{i>proxy<i} Anda. Misalnya, kebijakan MenetapkanMessage berikut akan 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.
Jika Apigee menerapkan kode kebijakan ExtractVariables di atas ke header ini, Apigee
menetapkan variabel clientrequest.oauthtoken
menjadi
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>
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 } } } }] }
Jika Apigee menerapkan kode kebijakan ExtractVariables di atas ke pesan JSON ini, Apigee
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 yang diberi nama
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>
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>
Jika Apigee menerapkan kode kebijakan ExtractVariables di atas ke pesan XML ini, maka menetapkan tiga variabel:
directionsresponse.travelmode
: Mendapatkan nilaiDRIVING
directionsresponse.duration
: Mendapatkan nilai19
directionsresponse.timeunit
: Mendapatkan nilaiminutes
Semua
variabel menggunakan awalan variabel yang sama dari directionsresponse
. Akhiran untuk
variabel ini ditetapkan secara eksplisit oleh elemen <Variable>
Atribut name
.
Anda sekarang dapat mengakses variabel directionresponse.travelmode
di
{i>proxy<i} Anda. Misalnya, kebijakan Menetapkan Pesan berikut akan menyalinnya ke header yang diberi nama
tmode
dalam respons:
<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 API Apigee.
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 MessageLogging>)
- 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 <Pattern>
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 proxy.pathsuffix setelah /a/
. Misalnya, anggaplah
jalur dasar untuk Proxy API Anda adalah /basepath/v1
. Dengan permintaan masuk
ke http://myCo.com/basepath/v1/a/b
variabel ditetapkan ke b
.
Menentukan beberapa pola
Anda dapat menentukan beberapa pola untuk dicocokkan, sesuai dengan tag <Pattern>
,
dalam hal ini:
- 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 urirequest.pathSeg
variabel ditetapkan ke b
.
Jika URL permintaan adalah:
http://myCo.com/basepath/v1/a/b/c/d
...lalu pola ketiganya cocok dan variabel urirequest.pathSeg
adalah
ditetapkan 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 , tempatkan Proxy API dengan jalur dasar /basepath/v1
untuk permintaan masuk
URL:
http://myCo.com/basepath/v1/a/b/c/d
...variabel urirequest.pathSeg1
ditetapkan ke b
dan
Variabel urirequest.pathSeg2
ditetapkan 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
adalah
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 <URIPath>
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, Anda harus menentukan satu atau beberapa <Variable>
tag tertentu dalam kebijakan.
Tag <Variable>
menentukan
nama variabel tujuan tempat informasi yang diekstrak disimpan, dan JsonPath
(JSON) atau XPATH (XML) ke informasi yang diekstrak.
Semua tag <Variable>
dalam kebijakan
dievaluasi, sehingga Anda dapat mengisi beberapa variabel dari satu kebijakan. Jika
tag <Variable>
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> 1</DisplayName> <Source clearPayload="true|false">request</Source> <VariablePrefix>myprefix</VariablePrefix> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> </URIPath> <QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam> <Header name="Authorization"> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header> <FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam> <Variable name="request.content"> <Pattern>hello {user}</Pattern> </Variable> <JSONPayload> <Variable name="name"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable> </XMLPayload> </ExtractVariables>
<ExtractVariables> atribut
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Kehadiran |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Atau, gunakan elemen |
T/A | Diperlukan |
continueOnError |
Setel ke Setel ke |
false | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini sudah tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI pengelolaan dengan nama natural-language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Kehadiran | Opsional |
Jenis | String |
<Source> 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
ditampilkan oleh kebijakan ServiceInfo, atau mengekstrak 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: | message |
Kehadiran: | Opsional |
Jenis: | String |
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
clearPayload |
Tetapkan ke true jika Anda ingin menghapus payload yang ditentukan di
Gunakan opsi |
salah |
Opsional | Boolean |
<VariablePrefix> elemen
(Opsional) Nama lengkap variabel dibuat dengan menggabungkan
<VariablePrefix>
, titik, dan nama yang Anda tetapkan dalam {tanda kurung kurawal} di
Elemen <Pattern>
atau elemen <Variable>
. 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 bernamauser
. - Jika
<VariablePrefix>
ditentukan sebagai myprefix, nilai yang diekstrak nilai ditetapkan ke variabel bernamamyprefix.user
.
Default: | T/A |
Kehadiran: | Opsional |
Jenis: | String |
<IgnoreUnresolvedVariables> 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 |
<URIPath> elemen
(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Mengekstrak nilai
dari proxy.pathsuffix pesan sumber request
. Jalur yang diterapkan ke
polanya adalah proxy.pathsuffix, yang tidak menyertakan jalur dasar untuk Proxy API. Jika
pesan sumber ditetapkan menjadi jenis pesan response
, maka elemen ini tidak melakukan apa pun.
<URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> </URIPath>
Anda dapat menggunakan beberapa elemen <Pattern>
:
<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 satu dari yang berikut:
<URIPath> , <QueryParam> , <Header> ,
<FormParam> , <JSONPayload> , atau
<XMLPayload>. |
Jenis: | T/A |
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
ignoreCase | Menentukan untuk mengabaikan huruf besar/kecil saat mencocokkan pola. |
salah |
Opsional | Boolean |
<QueryParam> elemen
(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Mengekstrak nilai
dari parameter kueri yang ditentukan untuk pesan sumber request
. Jika
pesan sumber di-resolve menjadi 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 satu dari yang berikut:
<URIPath> , <QueryParam> , <Header> ,
<FormParam> , <JSONPayload> , atau
<XMLPayload>. |
Jenis: | T/A |
Atribut
Atribut | Deskripsi | Default | Kehadiran | 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 |
<Header> elemen
(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Mengekstrak nilai
dari header HTTP yang ditentukan dari request
yang ditentukan atau
response
pesan. 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 satu dari yang berikut:
<URIPath> , <QueryParam> , <Header> ,
<FormParam> , <JSONPayload> , atau
<XMLPayload>. |
Jenis: | T/A |
Atribut
Atribut | Deskripsi | Default | Kehadiran | 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 |
<FormParam> elemen
(Opsional, tetapi lihat baris Kehadiran pada tabel di bawah untuk informasi selengkapnya.) Mengekstrak nilai
dari parameter formulir yang ditentukan untuk request
atau response
yang ditentukan
untuk membuat pesan email baru. 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 satu dari yang berikut:
<URIPath> , <QueryParam> , <Header> ,
<FormParam> , <JSONPayload> , atau
<XMLPayload>. |
Jenis: | T/A |
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
nama | Nama parameter formulir tempat Anda mengekstrak nilai. |
T/A |
Wajib | String |
<Variable> 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 satu dari yang berikut:
<URIPath> , <QueryParam> , <Header> ,
<FormParam> , <JSONPayload> , atau
<XMLPayload>. |
Jenis: | T/A |
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
nama | Nama variabel yang digunakan untuk mengekstrak nilai. |
T/A |
Wajib | String |
<JSONPayload> 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 data hanya dilakukan saat header Content-Type
pesan
application/json
.
<JSONPayload> <Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload>
Default: | T/A |
Kehadiran: | Opsional. Namun, Anda harus menyertakan minimal satu dari yang berikut:
<URIPath> , <QueryParam> , <Header> ,
<FormParam> , <JSONPayload> , atau
<XMLPayload>. |
Jenis: | T/A |
<JSONPayload>/<Variable> elemen
(Wajib dalam elemen JSONPayload.) Menentukan variabel tempat nilai yang diekstrak
ditugaskan. Anda dapat menyertakan beberapa tag <Variable>
di
Elemen <JSONPayload>
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 | Kehadiran | 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:
|
<JSONPayload>/<Variable>/<JSONPath> 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 |
<XMLPayload> 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 satu dari yang berikut:
<URIPath> , <QueryParam> , <Header> ,
<FormParam> , <JSONPayload> , atau
<XMLPayload>. |
Jenis: | T/A |
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
stopPayloadProcessing |
Tetapkan ke |
salah |
Opsional | Boolean |
<XMLPayload>/<Namespaces> 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 | Kehadiran | Jenis |
---|---|---|---|---|
prefix |
Awalan namespace. |
T/A |
Wajib | String |
<XMLPayload>/<Variable> 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 | Kehadiran | 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:
|
<XMLPayload>/<Variable>/<XPath> 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
Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan dan variabel kesalahan yang disetel oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kesalahan | Status HTTP | Penyebab | Perbaikan |
---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
Error ini terjadi saat:
|
build |
steps.extractvariables.ImmutableVariable |
500 |
Variabel yang digunakan dalam kebijakan tidak dapat diubah. Kebijakan tidak dapat menetapkan variabel ini. | T/A |
steps.extractvariables.InvalidJSONPath |
500 |
Error ini terjadi jika jalur JSON yang tidak valid digunakan dalam elemen JSONPath kebijakan. Misalnya, jika payload JSON tidak memiliki objek Name , tetapi Anda menentukan Name sebagai jalur dalam kebijakan, error ini akan terjadi. |
build |
steps.extractvariables.JsonPathParsingFailure |
500 |
Error ini terjadi jika kebijakan tidak dapat mengurai jalur JSON dan
mengekstrak data dari variabel flow yang ditentukan dalam elemen Source . Biasanya hal ini
terjadi jika variabel flow yang ditentukan dalam elemen Source tidak ada dalam alur
saat ini. |
build |
steps.extractvariables.SetVariableFailed |
500 |
Error ini terjadi jika kebijakan tidak dapat menetapkan nilai ke variabel. Error ini umumnya terjadi jika Anda mencoba menetapkan nilai ke beberapa variabel yang namanya diawali dengan kata yang sama dalam format yang dipisahkan dengan titik. | build |
steps.extractvariables.SourceMessageNotAvailable |
500 |
Error ini terjadi jika variabel message
yang ditentukan dalam elemen Source kebijakan
adalah:
|
build |
steps.extractvariables.UnableToCast |
500 |
Error ini terjadi jika kebijakan tidak dapat mentransmisikan nilai yang diekstrak ke variabel. Biasanya ini terjadi jika Anda mencoba menetapkan nilai satu jenis data ke variabel jenis data lain. | build |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab | Perbaikan |
---|---|---|
NothingToExtract |
Jika kebijakan tidak memiliki salah satu elemen URIPath , QueryParam , Header , FormParam , XMLPayload , atau JSONPayload , deployment Proxy API akan gagal karena tidak ada yang dapat diekstrak. |
build |
NONEmptyPrefixMappedToEmptyURI |
Error ini terjadi jika kebijakan memiliki awalan yang ditentukan dalam elemen
Namespace di bagian elemen XMLPayload , tetapi tidak ada URI
yang ditentukan. |
build |
DuplicatePrefix |
Error ini terjadi jika kebijakan memiliki awalan yang sama yang ditentukan lebih dari
sekali dalam elemen Namespace pada elemen XMLPayload . |
build |
NoXPathsToEvaluate |
Jika kebijakan tidak memiliki elemen XPath dalam elemen
XMLPayload , deployment proxy API akan gagal dengan error ini.
|
build |
EmptyXPathExpression |
Jika kebijakan memiliki ekspresi XPath kosong dalam elemen XMLPayload , deployment proxy API akan gagal. |
build |
NoJSONPathsToEvaluate |
Jika kebijakan tidak memiliki elemen JSONPath dalam elemen
JSONPayload , deployment proxy API akan gagal dengan error ini. |
build |
EmptyJSONPathExpression |
Jika kebijakan memiliki ekspresi XPath kosong dalam elemen
XMLPayload , deployment proxy API akan gagal. |
build |
MissingName |
Jika kebijakan tidak memiliki atribut name di salah satu elemen kebijakan seperti QueryParam , Header , FormParam atau Variable , jika diperlukan, deployment proxy API akan gagal. |
build |
PatternWithoutVariable |
Jika kebijakan tidak memiliki variabel yang ditentukan dalam elemen Pattern ,
deployment proxy API akan gagal. Elemen Pattern memerlukan nama variabel tempat data yang diekstrak akan disimpan. |
build |
CannotBeConvertedToNodeset |
Jika kebijakan memiliki ekspresi XPath dengan jenis Variable
ditentukan sebagai nodeset,
tetapi ekspresi tersebut tidak dapat dikonversi menjadi nodeset, deployment proxy API akan gagal. |
build |
JSONPathCompilationFailed |
Kebijakan tidak dapat mengompilasi Jalur JSON yang ditentukan. | T/A |
InstantiationFailed |
Kebijakan tidak dapat dibuat instance. | T/A |
XPathCompilationFailed |
Jika awalan atau nilai yang digunakan dalam elemen XPath bukan bagian dari namespace yang dideklarasikan dalam kebijakan, deployment proxy API akan gagal. |
build |
InvalidPattern |
Jika definisi elemen Pattern tidak valid di salah satu elemen seperti URIPath , QueryParam , Header , FormParam , XMLPayload , atau JSONPayload dalam kebijakan, deployment proxy API akan gagal.
|
build |
Variabel kesalahan
Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Dari mana | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. | fault.name = "SourceMessageNotAvailable" |
extractvariables.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | extractvariables.EV-ParseJsonResponse.failed = true |
Contoh respons error
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
Contoh aturan kesalahan
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>