Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
Ne?
ExtractVariables politikası, bir istek veya yanıttan içerik ayıklar ve bir değişkenin değerini bu içerik olarak ayarlar. Başlıklar, URI yolları, JSON/XML yükleri, form parametreleri ve sorgu parametreleri dahil olmak üzere iletinin herhangi bir bölümünü ayıklayabilirsiniz. Politika, ileti içeriğine bir metin kalıbı uygulayarak çalışır ve eşleşme bulunduğ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 AccessEntity politikası tarafından oluşturulan öğeler, XML nesneleri veya JSON nesneleri de dahil olmak üzere diğer kaynaklardan bilgi ayıklamak için de kullanabilirsiniz.
Belirtilen ileti içeriğini ayıkladıktan sonra, bir istek ve yanıt işleme sürecinin parçası olarak diğer politikalarda değişkene referans verebilirsiniz.
Videolar
ExtractVariables politikası hakkında daha fazla bilgi edinmek için aşağıdaki videoları izleyin.
| Video | Açıklama |
|---|---|
| XML yükünden değişkenleri çıkarma | Değişkeni Çıkarma politikasını kullanarak bir XML yükünden değişkenleri çıkarma. |
| JSON yükünden değişkenleri çıkarma | Değişkeni Çıkarma politikasını kullanarak JSON yükünden değişkenleri çıkarma. |
| Parametrelerden değişkenleri çıkarma | Sorgu, üstbilgi, form veya URI parametreleri gibi parametrelerden değişkenleri ayıklayın. |
| Çok değerli parametrelerden değişkenleri ayıklama | Çok değerli parametrelerden değişkenleri ayıklayın. |
| Sorgu parametresinden değişkenleri çıkarma (Classic Edge) | Classic Edge kullanıcı arayüzünü kullanarak bir sorgu parametresinden değişkenleri ayıklayın. |
| XML veya JSON yükünden değişkenleri çıkarma (Klasik Edge) | Klasik Edge kullanıcı arayüzünü kullanarak bir XML veya JSON yükünden değişkenleri ayıklayın. |
Örnekler
Bu politika kodu örnekleri, aşağıdaki türlerdeki öğelerden değişkenlerin nasıl çıkarılacağını gösterir:
GitHub
Bu bağlantılar, Edge'de dağıtabileceğiniz ve çalıştırabileceğiniz çalışan API proxy'si örneklerine yönlendirir. Bu politikalar ExtractVariables'ı kullanır ve GitHub'daki Apigee'nin api-platform-samples deposunda yer alır. README dosyalarında, ExtractVariables'ın her durumda nasıl kullanıldığı ve her örneğin nasıl dağıtılıp çalıştırılacağı açıklanmaktadır.
- Değişkenleri ayıklama ve atama örneği (JSON ve XML mesajlarından veri ayıklama)
- Erişim varlığı örneği
- Sayfalara bölme ve önbelleğe alma örneği
- Hedef URL örneğini yeniden yönlendirme
- Politika bileşimi karışımı ö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, ExtractVariables politikasına URI yolundan bilgi almasını söyler. <Pattern> öğesi, URI yoluna uygulanacak kalıbı belirtir. Desen, URI yolunun değişen kısmını gösteren küme parantezleriyle basit bir şablon olarak değerlendirilir.
Ayarlanacak değişkenin adı, <VariablePrefix> öğesinde belirtilen değerin yanı sıra <Pattern> öğesindeki süslü parantezler {} içine alınmış değerle belirlenir. İki değer araya nokta konularak birleştirilir. Örneğin, urirequest.id değişken adı elde edilir. <VariablePrefix> öğesi yoksa değişken adı yalnızca küme parantezleri içine alınmış değerdir.
Yukarıdaki örnek politika kodunun aşağıdaki gelen istekle çalıştığını varsayalım:
GET http://org1-test.apigee.net/svc1/accounts/12797282
API proxy'sinin temel yolu /svc1 olsun. Apigee Edge, yukarıdaki ExtractVariables politika kodunu bu gelen isteğe uyguladığında urirequest.id değişkenini 12797282 olarak ayarlar. Apigee Edge politikayı yürüttükten sonra,
işleme akışındaki sonraki politikalar veya kod, urirequest.id adlı değişkene başvurarak 12797282 dize değerini alabilir.
Örneğin, aşağıdaki AssignMessage politikası, bu değişkenin değerini yeni bir istek mesajının yüküne yerleştirir:
<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>Yukarıdaki örnek politika kodunun aşağıdaki gelen istekle çalıştığını varsayalım:
GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271
Apigee Edge, yukarıdaki ExtractVariables politika kodunu bu gelen isteğe uyguladığında queryinfo.dbncode değişkenini 88271 olarak ayarlar. Apigee Edge
politikayı yürüttükten sonra, işleme akışındaki sonraki politikalar veya kodlar, queryinfo.dbncode adlı değişkene başvurarak 88271 dize değerini alabilir.
Artık proxy'nizde queryinfo.dbncode değişkenine erişebilirsiniz.
Örneğin, aşağıdaki AssignMessage 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 çok 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ı ada sahip birden fazla sorgu parametresi belirtmenize olanak tanıdığını varsayalım. Bu politikayı, sorgu parametresi "w"nin birden fazla örneğinin değerini ayıklamak için kullanabilirsiniz. Bu sorgu parametrelerine ExtractVariables politikasında referans vermek için dizinleri kullanırsınız. Sorgu parametresinin ilk örneğinde dizin yoktur, ikinci örnek dizin 2'de, üçüncü örnek dizin 3'te yer alır.
Yukarıdaki örnek politika kodunun aşağıdaki gelen istekle çalıştığını varsayalım:
GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago
Apigee Edge, yukarıdaki ExtractVariables politika kodunu bu gelen isteğe uyguladığında,
queryinfo.firstWeather değişkenini Boston, queryInfo.secondWeather değişkenini ise Chicago olarak ayarlar.
Artık proxy'nizde queryinfo.firstWeather ve queryinfo.secondWeather değişkenlerine erişebilirsiniz. Örneğin, aşağıdaki AssignMessage 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"> <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 taşıyıcı jetonlarını kullandığını varsayalım. Yukarıdaki örnek politika kodunun, şu gibi bir üstbilgi içeren bir OAuth v2.0 jetonu taşıyan istekle çalıştığını düşünün:
Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.
API tasarımcısı olarak, önbellek aramasında anahtar olarak jeton değerini (ancak başlığın tamamını değil) kullanmak istediğinizi varsayalım. Jetonu ayıklamak için yukarıdaki ExtractVariables politika kodunu kullanabilirsiniz.
Apigee Edge, yukarıdaki ExtractVariables politika kodunu bu başlığa uyguladığında clientrequest.oauthtoken değişkenini TU08xptfFfeM7aS0xHqlxTgEAdAM olarak ayarlar.
Artık proxy'nizde clientrequest.oauthtoken değişkenine erişebilirsiniz. Örneğin, aşağıdaki AssignMessage politikası, bunu isteğin yüküne kopyalar:
<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>$
Aşağıdaki 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 ayarlar: geocoderesponse.latitude ve geocoderesponse.longitude. Her iki değişken de aynı geocoderesponse değişken önekini kullanıyor. Bu değişkenlerin soneki, <Variable> öğesinin name özelliğiyle açıkça belirtilir.
geocoderesponse.latitude değişkeni, 37.42291810 değerini alır. geocoderesponse.longitude değişkeni, -122.08542120 değerini alır.
Artık proxy'nizde geocoderesponse.latitude değişkenine erişebilirsiniz. Örneğin, aşağıdaki AssignMessage politikası, yanıtın "latitude" adlı üstbilgisine kopyalar:
<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ü inceleyin:
<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 ExtractVariables politika kodunu bu XML mesajına uyguladığında üç değişken ayarlar: directionsresponse.travelmode,, directionsresponse.duration ve directionsresponse.timeunit. Tüm
değişkenler, directionsresponse değişken ön ekini kullanır. Bu değişkenlerin son eki, <Variable> öğesinin name özelliğiyle açıkça belirtilir.
directionsresponse.travelmode değişkeni, DRIVING değerini alır. directionsresponse.duration değişkeni, 19 değerini alır. directionsresponse.timeunit değişkeni, minutes değerini alır.
Artık proxy'nizde directionresponse.travelmode değişkenine erişebilirsiniz. Örneğin, aşağıdaki AssignMessage politikası, yanıtın "tmode" adlı üst bilgisine kopyalar:
<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>
ExtractVariables politikası hakkında
API geliştiricileri, başlıklar, URI yolları, yükler ve sorgu parametreleri dahil olmak üzere iletilerin içeriğine göre farklı şekilde davranan API proxy'leri oluşturur. Genellikle proxy, koşul ifadesinde kullanılmak üzere bu içeriğin bir kısmını ayıklar. Bunu yapmak için ExtractVariables politikasını kullanın.
ExtractVariables politikasını tanımlarken şunları seçebilirsiniz:
- Ayarlanacak değişkenlerin adları
- Değişkenlerin kaynağı
- Kaç değişkenin ayıklanacağı ve ayarlanacağı
Politika yürütüldüğünde içeriğe bir metin kalıbı uygular ve eşleşme bulduğunda belirlenen değişkenin değerini içerikle ayarlar. Diğer politikalar ve kodlar daha sonra bu değişkenleri kullanarak dinamik davranışları etkinleştirebilir veya Edge API Analytics'e iş verileri gönderebilir.
ExtractVariables'ın içeriğe dayalı Analytics raporları oluşturmak için nasıl kullanılabileceğini öğrenmek istiyorsanız Özel analizler kullanarak API mesajı içeriğini analiz etme başlıklı makaleyi inceleyin.
Kapsam
ExtractVariables politikasıyla ayarlanan değişkenler global kapsama sahiptir. Yani ExtractVariables politikası yeni bir değişken tanımladıktan sonra, akışın herhangi bir aşamasındaki herhangi bir politikadan veya koddan (ExtractVariables politikasından sonra yürütülen) bu değişkene erişebilirsiniz. Bu kapsamda şunlar yer alır:
- PreFlow: ProxyEndpoint ve TargetEndpoint (İstek ve Yanıt)
- PostFlow: ProxyEndpoint ve TargetEndpoint (İstek ve Yanıt)
- PostClientFlow: ProxyEndpoint (yalnızca yanıt, Message Logging politikası kullanılarak)
- Hata akışları
Eşleştirme ve değişken oluşturma hakkında
ExtractVariables politikası, bir istek veya yanıttan bilgi ayıklar ve bu bilgiyi bir değişkene yazar. URI yolu veya XML verileri gibi çıkarabileceğiniz her bilgi türü için eşleştirilecek kalıbı ve çıkarılan bilgileri tutmak üzere kullanılan değişkenin adını belirtirsiniz.
Ancak kalıp eşleştirmenin işleyiş şekli, ayıklama kaynağına bağlıdır. Aşağıdaki bölümlerde, ayıklayabileceğiniz iki temel bilgi kategorisi açıklanmaktadır.
URI yollarını, sorgu parametrelerini, üstbilgileri, form parametrelerini ve değişkenleri eşleştirme
Bir URI yolundan, sorgu parametrelerinden, üstbilgilerden, form parametrelerinden ve değişkenlerden bilgi ayıklarken eşleştirilecek bir veya daha fazla kalıbı belirtmek için <Pattern> etiketini kullanırsınız. Örneğin, aşağıdaki politika örneğinde URI yolu için tek bir eşleşme kalıbı gösterilmektedir:
<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, proxy.pathsuffix içinde "/a/"dan sonra görünen değere ayarlanır. Örneğin, API proxy'nizin temel yolunun /basepath/v1 olduğunu varsayalım . http://myCo.com/basepath/v1/a/b adresine gelen bir istekte değişken "b" olarak ayarlanır.
Birden fazla desen belirtme
Eşleşecek birden fazla kalıp belirtebilirsiniz. Bunlar <Pattern> etiketlerine karşılık gelir.
- Tüm kalıplar eşleşme açısından test edilir.
- Kalıplardan hiçbiri eşleşmezse politika hiçbir işlem yapmaz ve değişkenler oluşturulmaz.
- Birden fazla kalıp eşleşirse ayıklama için en uzun yol segmentlerine sahip kalıp kullanılır.
- Eşleşen iki modelin en uzun yol segmentleri aynıysa ayıklama için politikada ilk belirtilen model kullanılır.
Bir sonraki örnekte, URI yolu için üç eşleşen kalıp içeren bir politika oluşturuyorsunuz:
<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>/basepath/v1 temel yoluna sahip bir API proxy'si için API proxy'sine gelen istek URL'sinin şu biçimde olduğunu varsayalım:
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 ayarlanır.
İstek URL'si şu şekildeyse:
http://myCo.com/basepath/v1/a/b/c/d
...bu durumda üçüncü kalıp eşleşir ve urirequest.pathSeg değişkeni "d" olarak ayarlanır.
Birden fazla değişken içeren kalıpları belirtme
Eşleşme deseninde birden fazla değişken belirtebilirsiniz. Örneğin, iki değişkenli bir eşleşme kalıbı belirtiyorsunuz:
<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>Temel yolu /basepath/v1 olan bir API proxy'si olduğunu varsayarsak gelen istek URL'si için:
http://myCo.com/basepath/v1/a/b/c/d
...urirequest.pathSeg1 değişkeni "b" olarak, urirequest.pathSeg2 değişkeni ise "d" olarak ayarlanır.
Desendeki birden fazla örneği eşleştirme
Aynı ada sahip bir öğenin birden fazla örneği olduğunda da kalıpları eşleştirebilirsiniz. Örneğin, aynı ada sahip birden fazla sorgu parametresi veya birden fazla üstbilgi içeren bir istekte bulunabilirsiniz. Aşağıdaki istekte "w" adlı iki sorgu parametresi bulunuyor:
http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2
Bu sorgu parametrelerine ExtractVariables politikasında referans vermek için dizinleri kullanırsınız. Sorgu parametresinin ilk örneğinde dizin yoktur, ikincisi 2. dizinde, üçüncüsü 3. dizindedir. Örneğin, aşağıdaki politika istekteki "w" adlı ikinci sorgu parametresinin değerini ayıklar:
<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" olarak ayarlanır. İkinci sorgu parametresi istekten çıkarılırsa urirequest.secondW değişkeni boş olur. İstek içinde aynı ada sahip birden fazla öğe olduğunda her zaman dizin oluşturmayı kullanın.
Desende özel karakterler kullanma
URI yollarını eşleştirirken kalıpta "*" ve "**" joker karakterlerini kullanabilirsiniz. Burada:
- "*" yolun herhangi bir segmentiyle eşleşir.
- "**", yolun birden fazla segmentiyle eşleşir.
Örneğin, aşağıdaki örnekte gösterildiği gibi <URIPath> öğesi için kalıplar belirtirsiniz:
<URIPath>
<Pattern ignoreCase="true">/a/*/{id}</Pattern>
<Pattern ignoreCase="true">/a/**/{id}</Pattern>
</URIPath>İlk kalıp, "/a/b/c", "/a/foo/bar" gibi yolsonekleri (URI yolunun temel yoldan sonraki kısmı) olan isteklerle eşleşir. İkinci kalıp, "/a/foo/bar/baz/c" gibi "/a/"dan sonraki herhangi bir sayıda yol segmentinin yanı sıra "/a/b/c" ve "/a/foo/bar" ile de eşleşir.
Sorgu parametreleri, üstbilgiler ve form parametreleri için kalıplar belirtirken "*" karakteri, herhangi bir sayıda karakterle eşleşmeyi belirtir. Örneğin, bir başlığı eşleştirirken kalıbı şu şekilde belirtin:
*;charset={encoding}
Bu desen, "text/xml;charset=UTF-16" ve "application/xml;charset=ASCII" değerleriyle eşleşir.
ExtractVariables politikasına iletilen değer "{" gibi özel bir karakter içeriyorsa bu karakteri kod dışına almak için "%" karakterini kullanın. Aşağıdaki örnekte, sorgu parametresinin değerinde değişmez karakterler olarak kullanıldıkları için kalıptaki "{" ve "}" karakterleri çıkış karakteriyle gösterilmiştir:
<QueryParam>
<Pattern ignoreCase="true">%{user%} {name}</Pattern>
</QueryParam>Bu örnekte, desen "{user} Steve" değeriyle eşleşir ancak "user Steve" değeriyle eşleşmez.
JSON ve XML eşleştirme
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ını ve ayıklanan bilgilere yönelik JsonPath (JSON) veya XPATH'i (XML) belirtir.
Politikadaki tüm <Variable> etiketleri değerlendirilir. Böylece, tek bir politikadan birden fazla değişkeni doldurabilirsiniz. <Variable> etiketi JSON veya XML'de geçerli bir alan olarak değerlendirilmezse ilgili değişken oluşturulmaz.
Aşağıdaki örnekte, bir yanıtın JSON gövdesinden iki değişkeni dolduran bir ExtractVariables politikası gösterilmektedir:
<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>
Aynı değişkene birden fazla yerden yazma
Ayarlanacak değişkenlerin adlarını seçerken dikkatli olun. Politika, ilk ayıklama kalıbından son ayıklama kalıbına kadar sırayla yürütülür. Politika, aynı değişkene birden fazla yerden değer yazarsa değişkenin değerini politikadaki son yazma işlemi belirler. (Bu, istediğiniz sonuç olabilir.)
Örneğin, aşağıda gösterildiği gibi bir sorgu parametresinde veya bir üstbilgide iletilebilen bir jeton değeri ayıklamak istiyorsunuz:
<!-- 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>Eşleşme olmadığında ne olacağını kontrol etme
Kalıp eşleşmezse ilgili değişken oluşturulmaz. Bu nedenle, başka bir politika değişkene referans veriyorsa hata oluşabilir.
Bir seçenek, politikayı çözümlenemeyen değişkenleri boş dize (null) olarak değerlendirecek şekilde yapılandırmak için değişkeni referans alan bir politikada <IgnoreUnresolvedVariables> değerini true olarak ayarlamaktır:
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Öğe referansı
Öğe referansı, ExtractVariables politikasının öğelerini ve özelliklerini açıklar.
<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> özellikleri
<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> öğesi
(İsteğe bağlı) Ayrıştırılacak değişkeni belirtir. <Source> değerinin varsayılanı message'dır. message değeri bağlama duyarlıdır. İstek akışında message, istek mesajına çözümlenir. Yanıt akışında message, yanıt mesajına dönüşür.
Bu politikayı genellikle bir istek veya yanıt mesajından bilgi ayıklamak için kullansanız da herhangi bir değişkenden bilgi ayıklamak için de kullanabilirsiniz. Örneğin, AccessEntity politikası tarafından oluşturulan bir öğeden, Service Callout politikası tarafından döndürülen verilerden veya bir XML ya da JSON nesnesinden bilgi ayıklamak için bu politikayı kullanabilirsiniz.
<Source> çözülemezse veya mesaj türü olmayan bir türe çözülürse
politika yanıt veremez.
<Source clearPayload="true|false">request</Source>
| Varsayılan: | mesaj |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Dize |
Özellikler
| Özellik | Açıklama | Varsayılan | Varlık | Tür |
|---|---|---|---|---|
| clearPayload |
Verileri ayıklama işleminden sonra <Source> içinde belirtilen yükü temizlemek istiyorsanız true olarak ayarlayın. |
yanlış |
İsteğe bağlı | Boole |
<VariablePrefix> öğesi
(İsteğe bağlı) Tam değişken adı, <VariablePrefix>, nokta ve <Pattern> öğesinde veya <Variable> öğesinde {süslü parantez} içinde tanımladığınız ad birleştirilerek oluşturulur. Örneğin:
myprefix.id, myprefix.dbncode veya myprefix.oauthtoken.
<VariablePrefix>myprefix</VariablePrefix>
Örneğin, adın değerinin "user" olduğunu varsayalım.
<VariablePrefix>belirtilmezse çıkarılan değerleruseradlı bir değişkene atanır.<VariablePrefix>, myprefix olarak belirtilirse ayıklanan değerlermyprefix.useradlı bir değişkene atanır.
| Varsayılan: | Yok |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Dize |
<IgnoreUnresolvedVariables> öğesi
(İsteğe bağlı) Çözülemeyen değişkenleri boş dize (null) olarak değerlendirmek için true olarak ayarlayın. Politikanın, referans verilen herhangi bir değişken çözümlenemediğinde hata vermesini istiyorsanız false olarak ayarlayın.
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
| Varsayılan: | Yanlış |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Boole |
Bir <XMLPayload> içinde XPath referansı çözümlenmemişse politika aşağıdaki hatayı verir:
{ "fault":{ "faultstring":"Unresolved xpath path in policy policy_name.", "detail":{ "errorcode":"steps.extractvariables.InvalidXPath" } } }
<URIPath> öğesi
(İsteğe bağlıdır ancak daha fazla bilgi için aşağıdaki tablodaki "Görünürlük" satırına bakın.) Bir istek kaynak mesajının proxy.pathsuffix'inden bir değer çıkarır. Kalıba uygulanan yol, API proxy'sinin temel yolunu içermeyen proxy.pathsuffix'tir. Kaynak mesaj yanıt mesaj türüne çözümlenirse bu öğe hiçbir şey yapmaz.
<URIPath>
<Pattern ignoreCase="false">/accounts/{id}</Pattern>
</URIPath>Birden fazla <Pattern> öğesi kullanmak mümkündür:
<URIPath>
<Pattern ignoreCase="false">/accounts/{id}</Pattern>
<Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern>
</URIPath>| Varsayılan: | Yok |
| Mevcut olma: | İsteğe bağlıdır. 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 | Deseni eşleştirirken büyük/küçük harf duyarlılığının yoksayılacağını belirtir. |
yanlış |
İsteğe bağlı | Boole |
<QueryParam> öğesi
(İsteğe bağlıdır ancak daha fazla bilgi için aşağıdaki tablodaki "Görünürlük" satırına bakın.) Bir istek kaynak mesajının belirtilen sorgu parametresinden bir değer çıkarır. Kaynak mesaj yanıt mesaj türüne çözümlenirse bu öğe hiçbir şey yapmaz.
<QueryParam name="code">
<Pattern ignoreCase="true">DBN{dbncode}</Pattern>
</QueryParam>Aynı ada sahip birden fazla sorgu parametresi varsa parametrelere referans vermek için dizinleri kullanın:
<QueryParam name="w.2">
<Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>| Varsayılan: | Yok |
| Mevcut olma: | İsteğe bağlıdır. 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ı ada sahipse dizine eklenmiş referans oluşturmayı kullanın. Bu yöntemde sorgu parametresinin ilk örneği dizine eklenmez, ikinci örnek 2. dizine, üçüncü örnek 3. dizine vb. eklenir. |
Yok |
Zorunlu | Dize |
<Header> öğesi
(İsteğe bağlıdır ancak daha fazla bilgi için aşağıdaki tablodaki "Görünürlük" satırına bakın.) Belirtilen istek veya yanıt mesajının belirtilen HTTP üstbilgisinden bir değer çıkarır. Birden fazla başlık aynı ada sahipse değerleri bir dizide saklanı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 fazla üstbilgi aynı ada sahipse dizideki üstbilgilere ayrı ayrı referans vermek için dizinleri kullanın:
<Header name="myHeader.2">
<Pattern ignoreCase="true">{secondHeader}</Pattern>
</Header>Veya dizideki tüm üstbilgileri listelemek için aşağıdakileri kullanın:
<Header name="myHeader.values">
<Pattern ignoreCase="true">{myHeaders}</Pattern>
</Header>| Varsayılan: | Yok |
| Mevcut olma: | İsteğe bağlıdır. 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 çıkaracağınız üstbilginin adını belirtir. Birden fazla üstbilgi aynı ada sahipse dizinlenmiş referans kullanın. Bu durumda, üstbilginin ilk örneğinde dizin yoktur, ikinci örnek 2. dizindedir, üçüncü örnek 3. dizindedir vb. Dizideki tüm üstbilgileri almak için .values kullanın. |
Yok |
Zorunlu | Dize |
<FormParam> öğesi
(İsteğe bağlıdır ancak daha fazla bilgi için aşağıdaki tablodaki "Görünürlük" satırına bakın.) Belirtilen istek veya yanıt mesajının belirtilen form parametresinden bir değer çıkarır. Form parametreleri yalnızca belirtilen iletinin Content-Type üstbilgisi application/x-www-form-urlencoded olduğunda ayıklanabilir.
<FormParam name="greeting">
<Pattern>hello {user}</Pattern>
</FormParam>| Varsayılan: | Yok |
| Mevcut olma: | İsteğe bağlıdır. 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 aldığınız form parametresinin adı. |
Yok |
Zorunlu | Dize |
<Variable> öğesi
(İsteğe bağlıdır ancak daha fazla bilgi için aşağıdaki tablodaki "Görünürlük" satırına bakın.) Değerin çıkarılacağı değişkenin adını belirtir.
<Variable name="myVar">
<Pattern>hello {user}</Pattern>
</Variable>Değişkenden iki değer ayıklamak için:
<Variable name="myVar">
<Pattern>hello {firstName} {lastName}</Pattern>
</Variable>| Varsayılan: | Yok |
| Mevcut olma: | İsteğe bağlıdır. 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 ayıklanacağı değişkenin adı. |
Yok |
Zorunlu | Dize |
<JSONPayload> öğesi
(İsteğe bağlıdır ancak daha fazla bilgi için aşağıdaki tablodaki "Görünürlük" satırına bakın.) Değişkenin değerinin çıkarılacağı JSON biçimli mesajı belirtir. JSON çıkarma 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 |
| Mevcut olma: | İsteğe bağlıdır. Ancak aşağıdakilerden en az birini eklemeniz gerekir:
<URIPath>, <QueryParam>, <Header>,
<FormParam>, <JSONPayload> veya
<XMLPayload>. |
| Tür: | Yok |
<JSONPayload>/<Variable> öğesi
(JSONPayload öğesinde zorunludur.) Ayıklanan değerin atandığı değişkeni belirtir. Birden fazla değişkeni doldurmak için <JSONPayload> öğesine birden fazla <Variable> etiketi ekleyebilirsiniz.
<Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable>
| Varsayılan: | Yok |
| Mevcut olma: | JSONPayload öğesinde zorunludur. |
| Tür: | Yok |
Özellikler
| Özellik | Açıklama | Varsayılan | Varlık | Tür |
|---|---|---|---|---|
| ad |
Ayıklanan değerin atanacağı değişkenin adını belirtir. |
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> öğesi
(JSONPayload:Variable öğesinde zorunludur.) JSON biçimli bir iletiden değer ayıklamak için kullanılan JSON yolunu belirtir.
<Variable name="name"> <JSONPath>$.rss.channel.title</JSONPath> </Variable>
| Varsayılan: | Yok |
| Mevcut olma: | Zorunlu |
| Tür: | Dize |
<XMLPayload> öğesi
(İsteğe bağlıdır ancak daha fazla bilgi için aşağıdaki tablodaki "Görünürlük" satırına bakın.) Değişkenin değerinin çıkarılacağı XML biçimli mesajı belirtir. XML yükleri yalnızca iletinin Content-Type üstbilgisi text/xml, application/xml veya application/*+xml olduğunda çıkarılır.
<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 |
| Mevcut olma: | İsteğe bağlıdır. 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 |
yanlış |
İsteğe bağlı | Boole |
<XMLPayload>/<Namespaces> öğesi
(İsteğe bağlı) XPath değerlendirmesinde kullanılacak ad alanını belirtir. XPath ifadelerinizde ad alanları kullanıyorsanız aşağıdaki örnekte gösterildiği gibi ad alanlarını burada beyan etmeniz gerekir.
<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 aşağıdaki örnekte gösterildiği gibi <Namespaces> öğesini atlayabilir veya yorum satırı olarak işaretleyebilirsiniz:
<XMLPayload stopPayloadProcessing="false"> <!-- <Namespaces/> --> <Variable name="legName" type="string"> <XPath>/Directions/route/leg/name</XPath> </Variable> </XMLPayload>
| Varsayılan: | Yok |
| Mevcut olma: | İ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> öğesi
(İsteğe bağlı) Ayıklanan değerin atanacağı değişkeni belirtir.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
| Varsayılan: | Yok |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Yok |
Özellikler
| Özellik | Açıklama | Varsayılan | Varlık | Tür |
|---|---|---|---|---|
| ad |
Ayıklanan değerin atanacağı değişkenin adını belirtir. |
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> öğesi
(XMLPayload:Variable öğesinde zorunludur.) Değişken için tanımlanan XPath'i belirtir. 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 bu ad alanlarını politikanın <XMLPayload><Namespaces> bölümünde beyan etmeniz gerekir.
<Variable name="name" type="boolean"> <XPath>/foo:test/foo:example</XPath> </Variable>
| Varsayılan: | Yok |
| Mevcut olma: | Zorunlu |
| Tür: | Dize |
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.
Çalışma zamanı hataları
Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.
| Hata kodu | HTTP durumu | Neden | Düzelt |
|---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
Bu hata aşağıdaki durumlarda oluşur:
|
build |
steps.extractvariables.ImmutableVariable |
500 | Politikada kullanılan değişkenler sabittir. Politika bunu ayarlayamadı değişkenine eklenmelidir. | |
steps.extractvariables.InvalidJSONPath |
500 | Bu hata,JSONPath
politikası. Örneğin, bir JSON yükü Name nesnesine sahip değilse
ancak politikada yol olarak Name değerini belirtirseniz bu hata oluşur. |
build |
steps.extractvariables.JsonPathParsingFailure |
500 | Bu hata, politika bir JSON yolunu ayrıştıramadığında ve
Source öğesinde belirtilen akış değişkeninden verileri ayıklayın. Genellikle bu
Source öğesinde belirtilen akış değişkeninin geçerli öğede mevcut olmaması,
akışı sağlar. |
build |
steps.extractvariables.SetVariableFailed |
500 | Bu hata, politika değeri bir değişkene ayarlayamadığında oluşur. Hata genellikle adları ile başlayan birden çok değişkene değer atamaya çalışırsanız aynı kelimeleri iç içe yerleştirilmiş ve noktayla ayrılmış biçimde yazın. | build |
steps.extractvariables.SourceMessageNotAvailable |
500 | Bu hata, ileti
politikanın Source öğesinde belirtilen değişken
şunlardan biridir:
|
build |
steps.extractvariables.UnableToCast |
500 | Bu hata, politika ayıklanan dosyayı bir değişkene dönüştürün. Bu genellikle bir veri türünü başka bir veri türünün değişkenine dönüştürebilirsiniz. | build |
Dağıtım hataları
Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.
| Hata adı | Neden | Düzelt |
|---|---|---|
NothingToExtract |
Politikada URIPath, QueryParam,
Header, FormParam, XMLPayload veya JSONPayload,
çıkarılacak bir şey olmadığından API Proxy dağıtımı başarısız olur. |
build |
NONEmptyPrefixMappedToEmptyURI |
Bu hata, politikanın
XMLPayload öğesinin altında Namespace öğesi var ancak URI yok
tanımlanmıştır. |
build |
DuplicatePrefix |
Bu hata, politikada şundan daha fazla tanımlanmış aynı ön eke sahipse ortaya çıkar:
XMLPayload öğesinin altındaki Namespace öğesinde bir kez. |
build |
NoXPathsToEvaluate |
PolitikanınXPath
XMLPayload öğesi olursa API proxy'sinin dağıtımı bu hatayla başarısız olur.
|
build |
EmptyXPathExpression |
Politikanın XMLPayload içinde boş bir XPath ifadesi varsa
öğesini görürseniz API proxy'sinin dağıtımı başarısız olur. |
build |
NoJSONPathsToEvaluate |
PolitikanınJSONPath
JSONPayload öğesi olursa API proxy'sinin dağıtımı bu hatayla başarısız olur. |
build |
EmptyJSONPathExpression |
PolitikanınXPath
XMLPayload öğesi olursa API proxy'sinin dağıtımı başarısız olur. |
build |
MissingName |
Politikanın hiçbirinde name özelliği yoksa
QueryParam, Header, FormParam veya
Variable değerini alırsa API proxy'sinin dağıtımı başarısız olur. |
build |
PatternWithoutVariable |
Politikanın Pattern öğesi içinde belirtilmiş bir değişkeni yoksa
API proxy'sinin dağıtımı başarısız olur. Pattern öğesi için şu ad gerekir:
ayıklanan verilerin depolanacağı değişken. |
build |
CannotBeConvertedToNodeset |
Politika, Variable türünün olduğu bir XPath ifadesi içeriyorsa
nodeset olarak tanımlanır
ancak ifade düğüm kümesine dönüştürülemezse API proxy'sinin dağıtımı başarısız olur. |
build |
JSONPathCompilationFailed |
Politika, belirtilen bir JSON Yolu'nu derleyemedi. | |
InstantiationFailed |
Politika örneklenemedi. | |
XPathCompilationFailed |
XPath öğesinde kullanılan önek veya değer
daha sonra API proxy'sinin dağıtımına izin verildikten sonra
başarısız olur. |
build |
InvalidPattern |
URIPath gibi öğelerin herhangi birinde Pattern öğe tanımı geçersizse
QueryParam, Header, FormParam, XMLPayload
veya politika içinde JSONPayload,
API proxy'si başarısız oldu.
|
build |
Hata değişkenleri
Bu değişkenler, politika çalışma zamanında bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Ne, ne ve ne zaman bilmeniz gerekir.
| Değişkenler | Konum | Örnek |
|---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name = "SourceMessageNotAvailable" |
extractvariables.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | extractvariables.EV-ParseJsonResponse.failed = true |
Örnek hata yanıtı
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
Örnek hata kuralı
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>