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.
- Ayıkla ve değişken örneği ata (JSON ve XML mesajlarından veri çıkarma)
- Erişim varlık örneği
- Sayfaları numaralandırma ve önbelleğe alma örneği
- Yeni rota çiz hedef URL örneği
- Politika bileşimi karma örneği
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ı
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 <Pattern> 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
<Pattern> 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, <URIPath> öğ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 <Variable> etiketi belirtirsiniz. <Variable> etiketi ayıklanan bilgilerin depolandığı hedef değişkenin adı ve JsonPath (JSON) veya XPATH (XML) ile uzaklaştırın.
Politikadaki tüm <Variable> etiketleri değerlendirildiğinden, tek bir politikadan birden fazla değişkeni doldurabilirsiniz. Eğer <Variable> 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>
<ExtractVariables> ö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ı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğ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 |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<Source> öğ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 |
<Source> otomatik olarak eklenir. |
false |
İsteğe bağlı | Boole |
<VariablePrefix> öğe
(İsteğe bağlı) Değişken adının tamamı,
<VariablePrefix>
, bir nokta ve
<Pattern>
öğesi veya <Variable> öğ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: Parametresiuser
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 |
<IgnoreUnresolvedVariables> öğ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" } } }
<URIPath> öğ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 <Pattern> öğ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 |
<QueryParam> öğ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 |
<Header> öğ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 |
<FormParam> öğ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 |
<Variable> öğ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 |
<JSONPayload> öğ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 |
<JSONPayload>/<Variable> öğe
(JSONPayload öğesi içinde gerekli.) Çıkarılan değerin olduğu değişkeni belirtir atanır. Doldurmak için <Variable> öğesine birden fazla <Variable> 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:
|
<JSONPayload>/<Variable>/<JSONPath> öğ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 |
<XMLPayload> öğ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 |
false |
İsteğe bağlı | Boole |
<XMLPayload>/<Namespaces> öğ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 |
<XMLPayload>/<Variable> öğ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:
|
<XMLPayload>/<Variable>/<XPath> öğe
(XMLPayload:Variable öğesi içinde gereklidir.) Şu öğe için tanımlanan XPath'i belirtir: değişkenine eklenmelidir. Yalnızca XPath 1.0 ifadeleri desteklenir.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
Ad alanı içeren örnek. XPath ifadelerinizde ad alanları kullanıyorsanız şunu bildirmeniz gerekir:
<XMLPayload><Namespaces>
bölümündeki ad alanları
daha fazla bilgi edineceksiniz.
<Variable name="name" type="boolean"> <XPath>/foo:test/foo:example</XPath> </Variable>
Varsayılan: | Yok |
Bulunma: | Zorunlu |
Tür: | Dize |
Hata referansı
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
This error occurs when:
|
build |
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. |
build |
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. |
build |
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. | build |
steps.extractvariables.SourceMessageNotAvailable |
500 | This error occurs if the message
variable specified in the Source element of the policy
is either:
|
build |
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. | build |
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. |
build |
NONEmptyPrefixMappedToEmptyURI |
This error occurs if the policy has a prefix defined in the
Namespace element under the XMLPayload element, but no URI is
defined. |
build |
DuplicatePrefix |
This error occurs if the policy has the same prefix defined more than
once in the Namespace element under the XMLPayload element. |
build |
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.
|
build |
EmptyXPathExpression |
If the policy has an empty XPath expression within the XMLPayload
element, then the deployment of the API proxy fails. |
build |
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. |
build |
EmptyJSONPathExpression |
If the policy has an empty XPath expression within the
XMLPayload element, then the deployment of the API proxy fails. |
build |
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. |
build |
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. |
build |
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. |
build |
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. |
build |
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.
|
build |
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>