Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
Değişkenleri Ayıklama politikası, bir istek veya yanıttaki içeriği ayıklar ve değişkenin değerini bu içeriğe ayarlar. Üstbilgiler, URI yolları, JSON/XML yükleri, form parametreleri ve sorgu parametreleri dahil olmak üzere mesajın herhangi bir bölümünü ayıklayabilirsiniz. Bu politika, ileti içeriğine bir metin kalıbı uygulayarak çalışır ve bir eşleşme bulduğunda belirtilen mesaj içeriğine sahip 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ı, XML nesneleri veya JSON nesneleri tarafından oluşturulan varlıklar dahil olmak üzere diğer kaynaklardan bilgi ayıklamak için de kullanabilirsiniz.
Belirtilen mesaj içeriğini çıkardıktan sonra, bir istek ve yanıtı işlemenin bir parçası olarak diğer politikalarda değişkene referans verebilirsiniz.
Videolar
Değişkenleri Ayıklama politikası hakkında daha fazla bilgi edinmek için aşağıdaki videoları izleyin.
Video | Açıklama |
---|---|
XML yükünden değişkenleri çıkarın | Değişken Ayıklama politikasını kullanarak XML yükünden değişkenler çıkarın. |
JSON yükünden değişkenleri çıkarın | Değişken Ayıklama politikasını kullanarak bir JSON yükünden değişkenleri çıkarın. |
Parametrelerden değişkenleri ayıklama | Sorgu, başlık, form veya URI parametreleri gibi parametrelerden değişkenleri çıkarın. |
Birden çok değerli parametrelerden değişkenleri ayıklama | Birden çok değerli parametrelerden değişkenleri ayıklayın. |
Sorgu parametresinden değişkenleri ayıklama (Klasik Edge) | Klasik Edge kullanıcı arayüzünü kullanarak bir sorgu parametresinden değişken çıkarın. |
XML veya JSON yükünden değişkenleri ayıklama (Klasik Edge) | Klasik Edge kullanıcı arayüzünü kullanarak XML veya JSON yükünden değişkenleri çıkarın. |
Sana Özel
Bu politika kodu örnekleri, aşağıdaki yapı türlerinden değişkenlerin nasıl alınacağını gösterir:
GitHub
Bu bağlantılar, Edge'de dağıtıp çalıştırabileceğiniz çalışan API proxy örneklerine yönlendirir. ExtractVariables kullanır ve Apigee'nin GitHub'daki api-platform-samples deposunda bulunur. README'ler, ExtractVariables'ın her bir örnekte nasıl kullanıldığını ve her bir örneğin nasıl dağıtılıp çalıştırılacağını açıklar.
- Değişken örneği ayıklama ve atama (JSON ve XML mesajlarından veri çıkarma)
- Varlık örneğine erişme
- Sayfalara ayırma ve önbelleğe alma örneği
- Hedef URL örneğini yeniden yönlendirme
- 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, ExtractVariables politikasına URI yolundan bilgi çıkarmasını söyler. <Pattern>
öğesi, URI yoluna uygulanacak kalıbı belirtir. Kalıp, URI yolunun değişen bölümlerini ifade eden küme parantezleri ile basit bir şablon olarak değerlendirilir.
Ayarlanacak değişkenin adı, <VariablePrefix>
öğesinde belirtilen değerin yanı sıra <Pattern>
öğesindeki süslü ayraçlar {} içine alınan değere göre belirlenir. Bu iki değer, araya giren bir noktayla birleştirilir. Bu durumda, örneğin urirequest.id
şeklinde bir değişken adı elde edilir. <VariablePrefix>
öğesi yoksa değişken adı yalnızca süslü ayraçlar içine alınan değerdir.
Aşağıdaki örnek politika kodunu kullanarak aşağıdaki gelen istekle çalışmayı düşünebilirsiniz:
GET http://org1-test.apigee.net/svc1/accounts/12797282
API Proxy'sinin basepath yolunun /svc1
olduğunu varsayalım. Apigee Edge, bu gelen isteğe yukarıdaki ExtractVariables politika kodunu 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, 12797282
dize değerini almak için urirequest.id
adlı değişkene başvurabilir.
Örneğin, aşağıdaki AttributionMessage 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>
Aşağıdaki örnek politika kodunu kullanarak aşağıdaki gelen istekle çalışmayı düşünebilirsiniz:
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 kod, 88271
dize değerini almak için queryinfo.dbncode
adlı değişkene başvurabilir.
Artık queryinfo.dbncode
değişkenine proxy'nizden 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 ç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ı adla birden fazla sorgu parametresi belirtmenize izin verdiğini varsayalım. "w" sorgu parametresinin birden fazla örneğinden değer çıkarmak için bu politikayı kullanabilirsiniz. Değişkenleri Ayıklama politikasında bu sorgu parametrelerine referans vermek için dizinleri kullanırsınız. Bu örnekte sorgu parametresinin ilk örneğinin dizini yoktur, ikinci örneğinin dizin 2, üçüncüsünün de 3. dizinde bulunması gerekir.
Aşağıdaki örnek politika kodunu kullanarak aşağıdaki gelen istekle çalışmayı düşünebilirsiniz:
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
ve queryInfo.secondWeather
değişkenini Chicago
olarak ayarlar.
Artık queryinfo.firstWeather
değişkenine ve queryinfo.secondWeather'a proxy'nizde 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"> <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. Aşağıdaki örnek politika kodunu kullanarak, aşağıdaki gibi bir başlık içeren OAuth v2.0 jetonu taşıyan bir istekle çalışmayı düşünebilirsiniz:
Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.
API tasarımcısı olarak, jeton değerini (üst bilginin tamamını değil) önbellek aramasında bir anahtar olarak kullanmak istediğinizi varsayalım. Jetonu çıkarmak 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 clientrequest.oauthtoken
değişkenine proxy'nizden 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>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ır. Bu değişkenlerin son eki, <Variable>
öğesinin name
özelliği tarafından 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 geocoderesponse.latitude
değişkenine proxy'nizden erişebilirsiniz. Örneğin, aşağıdaki AttributionMessage politikası bunu yanıtta "latitude" adlı bir üstbilgiye 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ü 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 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 aynı directionsresponse
değişken ön ekini kullanır. Bu değişkenlerin son eki, <Variable>
öğesinin name
özelliği tarafından 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 directionresponse.travelmode
değişkenine proxy'nizden erişebilirsiniz. Örneğin, aşağıdaki AttributionMessage politikası bunu yanıtta "tmode" adlı bir üstbilgiye 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>
Değişkenleri Ayıklama politikası hakkında
API geliştiricileri; başlıklar, URI yolları, yükler ve sorgu parametreleri dahil olmak üzere mesajların içeriğine göre farklı şekilde çalışan API proxy'leri oluşturur. Proxy genellikle bir koşul ifadesinde kullanmak üzere bu içeriğin bir kısmını çıkarır. Bunun için Değişkenleri Ayıklama politikasını kullanın.
Değişkenleri Ayıklama politikasını tanımlarken şunları seçebilirsiniz:
- Ayarlanacak değişkenlerin adları
- Değişkenlerin kaynağı
- Ayıklanacak ve ayarlanacak değişken sayısı
Politika, yürütüldüğünde içeriğe bir metin kalıbı uygular ve eşleşme bulunduğunda belirtilen değişkenin değerini içerikle birlikte ayarlar. Ardından diğer politikalar ve kodlar dinamik davranışı etkinleştirmek veya iş verilerini Edge API Analytics'e göndermek için bu değişkenleri kullanabilir.
ExtractVariables'ın içeriğe dayalı Analytics raporları oluştururken nasıl kullanılabileceğini öğrenmek için Özel analizler kullanarak API mesajı içeriğini analiz etme bölümüne bakın.
Kapsam
ExtractVariables politikasıyla ayarlanan değişkenler genel kapsama sahiptir. Yani ExtractVariables politikası yeni bir değişken tanımladıktan sonra, bu değişkene akışın herhangi bir aşamasında (ExtractVariables politikasından sonra yürütülen) herhangi bir politika veya koddan erişebilirsiniz. Buna aşağıdakiler dahildir:
- 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ını kullanarak)
- Hata Akışları
Eşleştirme ve değişken oluşturma hakkında
Değişkenleri Ayıklama politikası, bir istek veya yanıttan bilgi ayıklar ve bu bilgileri bir değişkene yazar. URI yolu veya XML verileri gibi ayıklayabileceğiniz her bilgi türü için eşleştirilecek kalıbı ve çıkarılan bilgiyi barındırmak amacıyla kullanılan değişkenin adını belirtirsiniz.
Ancak kalıp eşleştirmenin çalışma şekli ayıklamanın kaynağına bağlıdır. Aşağıdaki bölümlerde, çıkarabileceğiniz iki temel bilgi kategorisi açıklanmaktadır.
Eşleşen URI yolları, sorgu parametreleri, başlıklar, form parametreleri ve değişkenler
Bir URI yolundan bilgi ayıklarken sorgu parametrelerine, üst bilgilere, form parametrelerine ve değişkenlere bakarken bir veya daha fazla kalıp 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şen kalıp 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/" ifadesinden sonra görünen değere ayarlanmıştır. Örneğin, API Proxy'nizin temel yolunun /basepath/v1 olduğunu varsayalım . http://myCo.com/basepath/v1/a/b adresine gelen bir istek için değişken, "b" olarak ayarlanır.
Birden çok kalıp belirtme
<Pattern> etiketlerine karşılık gelen, eşleşecek birden fazla desen belirtebilirsiniz. Burada:
- Tüm kalıplar eşleşme açısından test edilir.
- Kalıplardan hiçbiri eşleşmezse politika hiçbir şey yapmaz ve değişkenler oluşturulmaz.
- Birden fazla kalıp eşleşirse ayıklama için yol segmentleri en uzun olan kalıp kullanılır.
- Eşleşen iki kalıp en uzun yol segmentlerine sahipse ayıklama için politikada ilk belirtilen kalıp 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>
Temel yolu /basepath/v1 olan 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 ayarlanmıştır.
İstek URL'si:
http://myCo.com/basepath/v1/a/b/c/d
...ise üçüncü kalıp eşleşir ve urirequest.pathSeg değişkeni "d" olarak ayarlanır.
Birden çok değişkenli kalıp belirtme
Eşleşen kalıpta birden çok değişken belirtebilirsiniz. Örneğin, iki değişkenle eşleşen bir kalıp belirtirsiniz:
<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>
Gelen istek URL'si için tekrar /basepath/v1 temel yoluna sahip bir API Proxy'si olduğunu varsayalım:
http://myCo.com/basepath/v1/a/b/c/d
...urirequest.pathSeg1 değişkeni "b" ve urirequest.pathSeg2 değişkeni "d" olarak ayarlanmıştır.
Kalıpta birden çok örnek eşleşiyor
Bir öğenin aynı ada sahip birden fazla örneği olduğunda da kalıpları eşleştirebilirsiniz. Örneğin, birden fazla sorgu parametresi veya aynı ada sahip birden fazla başlık içeren bir istek gönderebilirsiniz. Aşağıdaki istek "w" adlı iki sorgu parametresi içeriyor:
http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2
Değişkenleri Ayıklama politikasında bu sorgu parametrelerine referans vermek için, sorgu parametresinin ilk örneğinin dizin olmadığı, ikincisinin 2. dizinde, üçüncüsü dizin 3'te olduğu dizinleri kullanırsınız. Örneğin, aşağıdaki politika, istekte "w" adlı ikinci sorgu parametresinin değerini çıkarır:
<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 ayarlanmıştır. İkinci sorgu parametresi istekten çıkarılırsa urirequest.secondW değişkeni boş olur. İstekte aynı ada sahip birden fazla öğe olduğunda dizine ekleme özelliğini kullanın.
Kalıpta ö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 çok segmentiyle eşleşiyor
Örneğin, aşağıda gösterildiği gibi <URIPath> öğesinde 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" vb. gibi pathuffix'leri (temel yolu izleyen URI yolunun bölümü) ile eşleştirir. İkinci kalıp, "/a/foo/bar/baz/c"nin yanı sıra "/a/b/c" ve "/a/foo/bar" gibi "/a/" ifadesinden sonra gelen, istenilen sayıda yol segmentiyle eşleşir.
Sorgu parametreleri, başlıklar ve form parametreleri için kalıplar belirtirken "*" karakteri, istenen sayıda karakterle eşleşeceğini belirtir. Örneğin, bir başlığı eşleştirirken kalıbı şu şekilde belirtin:
*;charset={encoding}
Bu kalıp, "text/xml;charset=UTF-16" ve "application/xml;charset=ASCII" değerleriyle eşleşir.
Değişkenleri Ayıklama politikasına iletilen değer "{" gibi özel bir karakter içeriyorsa çıkış yapmak için "%" karakterini kullanın. Aşağıdaki örnekte, sorgu parametresinin değerinde sabit karakterler olarak kullanıldığından kalıptaki "{" ve "}" karakterleri çıkış yapılmaktadır:
<QueryParam> <Pattern ignoreCase="true">%{user%} {name}</Pattern> </QueryParam>
Bu örnekte, kalıp "{user} Steve" değeriyle eşleşir ancak "user Steve" değeriyle eşleşmez.
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ını ve çıkarılan bilginin JsonPath (JSON) veya XPATH (XML) adını belirtir.
Politikadaki tüm <Variable> etiketleri değerlendirilir. Böylece tek bir politikadan birden fazla değişken girebilirsiniz. <Variable> etiketi JSON veya XML'de geçerli bir alanı değerlendirmiyorsa 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>
Birden fazla yerde aynı değişkene yazma
Ayarlanacak değişkenlerin adlarını seçerken dikkatli olun. Politika, ilk ayıklama kalıbından son çıkarma kalıbına kadar sırayla yürütülür. Politika, aynı değişkene birden çok yerden bir değer yazarsa değişkenin değerini politikadaki son yazma işlemi belirler. (İstediğiniz gibi olabilir.)
Örneğin, aşağıda gösterildiği gibi bir sorgu parametresinde veya başlıkta iletilebilecek bir jeton değerini çıkarmak 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 karşılık gelen değişken oluşturulmaz. Dolayısıyla, başka bir politikanın değişkene referans vermesi hataya neden olabilir.
Seçeneklerden biri, çözümlenemeyen değişkenleri boş dize (null) olarak ele alacak şekilde yapılandırmak için değişkene referans veren bir politikada <IgnoreUnresolvedVariables>
politikasını true (doğru) değerine 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ı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için Bir politika başarısız olduktan sonra bile akış yürütülmesinin 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 özellik kullanımdan kaldırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğesi
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name
özelliğine ek olarak kullanın.
<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ğeri varsayılan olarak message
değerine ayarlanır. message
değeri bağlama duyarlıdır. Bir istek akışında, message
istek mesajına çözümlenir. Yanıt akışında 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 herhangi bir değişkenden bilgi ayıklamak için kullanabilirsiniz. Örneğin, AccessEntity politikası tarafından oluşturulan bir varlıktan, Hizmet Çağrısı politikası tarafından döndürülen verilerden bilgi ayıklamak veya bir XML ya da JSON nesnesinden bilgi ayıklamak için bu API'yi kullanabilirsiniz.
<Source>
çözümlenemez veya mesaj olmayan bir türe çözümlenirse politika yanıt veremez.
<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 |
<Kaynak> bölümünden veri ayıkladıktan sonra içindeki yükü temizlemek istiyorsanız true (doğru) değerine ayarlayın. |
false |
İsteğe bağlı | Boole |
<VariablePrefix> öğesi
(İsteğe bağlı) Tam değişken adı, <Pattern>
öğesinde veya <Variable> öğesinde <VariablePrefix>
, bir nokta ve {curly braces} 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, name değerinin "user" olduğunu varsayalım.
<VariablePrefix>
belirtilmezse ayıklanan değerleruser
adlı bir değişkene atanır.<VariablePrefix>
ön ek olarak belirtilirse çıkarılan değerlermyprefix.user
adlı bir değişkene atanır.
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Dize |
<ignoreUnresolvedVariables> öğesi
(İsteğe bağlı) Çözümlenemeyen değişkenleri boş dize (null) olarak işlemek için true
olarak ayarlayın. Başvurulan herhangi bir değişken çözümlenemez durumda olduğunda politikanın hata vermesini istiyorsanız false
olarak ayarlayın.
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Varsayılan: | Yanlış |
Bulunma: | İsteğe bağlı |
Tür: | Boole |
Bir XPath referansı bir <XMLPayload>
içinde çözülmezse politika aşağıdaki hatayı bildirir:
{ "fault":{ "faultstring":"Unresolved xpath path in policy policy_name.", "detail":{ "errorcode":"steps.extractvariables.InvalidXPath" } } }
<URIPath> öğesi
(İsteğe bağlı, ancak daha fazla bilgi için aşağıdaki tablodaki Durum satırına bakın.) Bir request kaynak mesajının proxy.pathsuffix öğesinden bir değer çıkarır. Kalıba uygulanan yol, API Proxy'sinin temel yolunu içermeyen proxy.pathsuffix yoludur. Kaynak mesaj yanıt mesaj türüne dönüşürse bu öğe hiçbir şey yapmaz.
<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ı. Bununla birlikte, şunlardan 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ştirilirken büyük/küçük harf kullanımının yoksayılacağını belirtir. |
false |
İsteğe bağlı | Boole |
<QueryParam> öğesi
(İsteğe bağlı, ancak daha fazla bilgi için aşağıdaki tablodaki Durum satırına bakın.) Bir request 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>
Birden fazla sorgu parametresi aynı ada sahipse parametrelere referansta bulunmak için dizinleri kullanın:
<QueryParam name="w.2"> <Pattern ignoreCase="true">{secondW}</Pattern> </QueryParam>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı. Bununla birlikte, şunlardan 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. Aynı ada sahip olan birden fazla sorgu parametresi varsa dizine eklenen referans değerini kullanın. Bu örnekte sorgu parametresinin ilk örneği dizin içermiyor, ikinci örneği 2. dizin, üçüncüsü 3. dizinde bulunuyor. |
Yok |
Gerekli | Dize |
<Header> öğesi
(İsteğe bağlı, ancak daha fazla bilgi için aşağıdaki tablodaki Durum satırına bakın.) Belirtilen istek veya yanıt mesajının belirtilen HTTP başlığından bir değer çıkarır. Birden fazla başlık aynı ada sahipse 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 fazla başlık aynı ada sahipse dizideki bağımsız başlıklara referans vermek için dizinleri kullanın:
<Header name="myHeader.2"> <Pattern ignoreCase="true">{secondHeader}</Pattern> </Header>
Dizideki tüm üst bilgileri listelemek için aşağıdakileri de uygulayabilirsiniz:
<Header name="myHeader.values"> <Pattern ignoreCase="true">{myHeaders}</Pattern> </Header>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı. Bununla birlikte, şunlardan 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 başlığın adını belirtir. Birden fazla başlık aynı ada sahipse dizine eklenmiş referans yöntemini kullanın. Burada, başlığın ilk örneği dizin içermiyor, ikincisi dizin 2'de, üçüncüsü 3. dizinde bulunuyor. Dizideki tüm üst bilgileri almak için .values kullanın. |
Yok |
Gerekli | Dize |
<FormParam> öğesi
(İsteğe bağlı, ancak daha fazla bilgi için aşağıdaki tablodaki Durum satırına bakın.) Belirtilen request veya yanıt mesajının belirtilen form parametresinden bir değer çıkarır. Form parametreleri yalnızca belirtilen mesajın Content-Type
üstbilgisi application/x-www-form-urlencoded
olduğunda çıkarılabilir.
<FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı. Bununla birlikte, şunlardan 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 form parametresinin adı. |
Yok |
Gerekli | Dize |
<Variable> öğesi
(İsteğe bağlı, ancak daha fazla bilgi için aşağıdaki tablodaki Durum 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 |
Bulunma: | İsteğe bağlı. Bununla birlikte, şunlardan 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 |
Gerekli | Dize |
<JSONPayload> öğesi
(İsteğe bağlı, ancak daha fazla bilgi için aşağıdaki tablodaki Durum satırına bakın.) Değişken değerinin ayıklanacağı JSON biçimli mesajı belirtir. JSON ayıklama işlemi yalnızca mesajın 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ı. Bununla birlikte, şunlardan en az birini eklemeniz gerekir:
<URIPath> , <QueryParam> , <Header> ,
<FormParam> , <JSONPayload> veya
<XMLPayload>. |
Tür: | Yok |
<JSONPayload>/<Variable> öğesi
(JSONPayload öğesi içinde gereklidir.) Ayıklanan değerin atandığı değişkeni belirtir. Birden fazla değişkeni doldurmak için <JSONPayload> öğesine birden çok <Variable> etiketi ekleyebilirsiniz.
<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 |
Ayıklanan değerin atanacağı değişkenin adını belirtir. |
ad |
Gerekli | 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 öğesi içinde gereklidir.) JSON biçimli bir mesajdan bir değer çıkarmak için kullanılan JSON yolunu belirtir.
<Variable name="name"> <JSONPath>$.rss.channel.title</JSONPath> </Variable>
Varsayılan: | Yok |
Bulunma: | Gerekli |
Tür: | Dize |
<XMLPayload> öğesi
(İsteğe bağlı, ancak daha fazla bilgi için aşağıdaki tablodaki Durum satırına bakın.) Değişken değerinin ayıklanacağı XML biçimli mesajı belirtir. XML yükleri yalnızca mesajın Content-Type
başlığı 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 |
Bulunma: | İsteğe bağlı. Bununla birlikte, şunlardan 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> öğesi
(İsteğe bağlı) XPath değerlendirmesinde kullanılacak ad alanını belirtir. XPath ifadelerinizde ad alanları kullanıyorsanız ad alanlarını aşağıdaki örnekte gösterildiği gibi burada belirtmeniz 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 yorumlayabilirsiniz:
<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 |
Gerekli | 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 |
Bulunma: | İ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 |
Gerekli | 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 öğesi içinde gereklidir.) Değişken için tanımlanan XPath belirtir. Yalnızca XPath 1.0 ifadeleri desteklenir.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
Ad alanını içeren örnek. XPath ifadelerinizde ad alanları kullanıyorsanız ad alanlarını politikanın <XMLPayload><Namespaces>
bölümünde belirtmeniz gerekir.
<Variable name="name" type="boolean"> <XPath>/foo:test/foo:example</XPath> </Variable>
Varsayılan: | Yok |
Bulunma: | Gerekli |
Tür: | Dize |
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
Bu hata şu durumlarda oluşur:
|
build |
steps.extractvariables.ImmutableVariable |
500 | Politikada kullanılan değişken sabittir. Politika bu değişkeni ayarlayamadı. | |
steps.extractvariables.InvalidJSONPath |
500 | Bu hata, politikanın JSONPath öğesinde geçersiz bir JSON yolu kullanılırsa ortaya çıkar. Örneğin, bir JSON yükü Name nesnesine sahip değilse ancak politikada yol olarak Name nesnesini belirtirseniz bu hata oluşur. |
build |
steps.extractvariables.JsonPathParsingFailure |
500 | Bu hata, politika bir JSON yolunu ayrıştıramadığı ve Source öğesinde belirtilen akış değişkeninden veri çıkaramadığında ortaya çıkar. Bu durum genellikle Source öğesinde belirtilen akış değişkeni mevcut akışta yoksa ortaya çıkar. |
build |
steps.extractvariables.SetVariableFailed |
500 | Politika, değeri bir değişkene ayarlayamadığında bu hata oluşur. Bu hata genellikle, adları aynı kelimelerle başlayan birden fazla değişkene, iç içe ve noktayla ayrılmış biçimde değer atamaya çalışırsanız ortaya çıkar. | build |
steps.extractvariables.SourceMessageNotAvailable |
500 | Bu hata, politikanın Source öğesinde belirtilen message değişkeni şunlardan biriyse ortaya çıkar:
|
build |
steps.extractvariables.UnableToCast |
500 | Politika, ayıklanan değeri bir değişkene yayınlayamadıysa bu hata oluşur. Bu durum genellikle, bir veri türünün değerini başka bir veri türünün değişkeni olarak ayarlamayı denerseniz ortaya çıkar. | build |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.
Hata adı | Neden | Düzelt |
---|---|---|
NothingToExtract |
Politikada URIPath , QueryParam ,
Header , FormParam , XMLPayload veya JSONPayload öğelerinden hiçbiri yoksa çıkarılacak bir şey olmadığından API Proxy'sinin dağıtımı başarısız olur. |
build |
NONEmptyPrefixMappedToEmptyURI |
Bu hata, politikanın XMLPayload öğesi altındaki Namespace öğesinde tanımlanmış bir ön eki varsa ancak hiçbir URI tanımlanmamışsa ortaya çıkar. |
build |
DuplicatePrefix |
Bu hata, politikanın XMLPayload öğesi altındaki Namespace öğesinde aynı ön ekin birden fazla kez tanımlanmış olması durumunda ortaya çıkar. |
build |
NoXPathsToEvaluate |
Politikanın XMLPayload öğesi içinde XPath öğesi yoksa API proxy'sinin dağıtımı bu hatayı vererek başarısız olur.
|
build |
EmptyXPathExpression |
Politikanın XMLPayload öğesi içinde boş bir XPath ifadesi varsa API proxy'sinin dağıtımı başarısız olur. |
build |
NoJSONPathsToEvaluate |
Politikanın JSONPayload öğesi içinde JSONPath öğesi yoksa API proxy'sinin dağıtımı bu hatayı vererek başarısız olur. |
build |
EmptyJSONPathExpression |
Politikanın XMLPayload öğesi içinde boş bir XPath ifadesi varsa API proxy'sinin dağıtımı başarısız olur. |
build |
MissingName |
Politika gerekli olduğu durumlarda QueryParam , Header , FormParam veya Variable gibi politika öğelerinin hiçbirinde name özelliği içermiyorsa API proxy'sinin dağıtımı başarısız olur. |
build |
PatternWithoutVariable |
Politikanın Pattern öğesi içinde belirtilmiş bir değişken yoksa API proxy'sinin dağıtımı başarısız olur. Pattern öğesi, ayıklanan verilerin depolanacağı değişkenin adını gerektirir. |
build |
CannotBeConvertedToNodeset |
Politika, Variable türünün nodeset olarak tanımlandığı bir XPath ifadesine sahipse ancak ifade düğüm kümesine dönüştürülemiyorsa API proxy'sinin dağıtımı başarısız olur. |
build |
JSONPathCompilationFailed |
Politika, belirtilen bir JSON Yolunu derleyemedi. | |
InstantiationFailed |
Bu politika örneği oluşturulamadı. | |
XPathCompilationFailed |
XPath öğesinde kullanılan ön ek veya değer, politikada belirtilen ad alanlarının hiçbirinin parçası değilse API proxy'sinin dağıtımı başarısız olur. |
build |
InvalidPattern |
Politikadaki URIPath , QueryParam , Header , FormParam , XMLPayload veya JSONPayload gibi öğelerden herhangi birinde Pattern öğesi tanımı geçersizse API proxy'sinin dağıtımı başarısız olur.
|
build |
Hata değişkenleri
Bu değişkenler, bu politika çalışma zamanında bir hata tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen 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" } }
Hata kuralı örneği
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>