Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Co
Zasada ExtractVariables wyodrębnia treść z żądania lub odpowiedzi i ustawia wartość zmiennej na tę treść. Możesz wyodrębnić dowolną część wiadomości, w tym nagłówki, ścieżki URI, ładunki JSON/XML, parametry formularza i parametry zapytania. Działanie zasady polega na zastosowaniu wzorca tekstu do treści wiadomości i ustawieniu zmiennej z określoną treścią wiadomości po znalezieniu dopasowania.
Chociaż ta zasada jest często używana do wyodrębniania informacji z wiadomości żądania lub odpowiedzi, możesz jej też używać do wyodrębniania informacji z innych źródeł, w tym z encji utworzonych przez zasadę AccessEntity, obiektów XML lub obiektów JSON.
Po wyodrębnieniu określonej treści wiadomości możesz odwoływać się do zmiennej w innych zasadach w ramach przetwarzania żądania i odpowiedzi.
Filmy
Aby dowiedzieć się więcej o zasadach ExtractVariables, obejrzyj te filmy.
| Wideo | Opis |
|---|---|
| Wyodrębnianie zmiennych z ładunku XML | Wyodrębnij zmienne z ładunku XML za pomocą zasady Extract Variable. |
| Wyodrębnianie zmiennych z ładunku JSON | Wyodrębnij zmienne z ładunku JSON za pomocą zasady Extract Variable. |
| Wyodrębnianie zmiennych z parametrów | Wyodrębnij zmienne z parametrów, takich jak parametry zapytania, nagłówka, formularza lub identyfikatora URI. |
| Wyodrębnianie zmiennych z parametrów z wieloma wartościami | Wyodrębnianie zmiennych z parametrów o wielu wartościach. |
| Wyodrębnianie zmiennych z parametru zapytania (Classic Edge) | Wyodrębnianie zmiennych z parametru zapytania za pomocą klasycznego interfejsu Edge. |
| Wyodrębnianie zmiennych z ładunku XML lub JSON (Classic Edge) | Wyodrębnianie zmiennych z ładunku XML lub JSON za pomocą klasycznego interfejsu Edge. |
Przykłady
Te przykłady kodu zasad pokazują, jak wyodrębniać zmienne z tych typów artefaktów:
GitHub
Te linki prowadzą do działających przykładów serwerów proxy interfejsu API, które możesz wdrożyć i uruchomić w Edge. Korzystają one z zasady ExtractVariables i znajdują się w repozytorium api-platform-samples Apigee w serwisie GitHub. Pliki README wyjaśniają, jak w każdym przypadku używana jest zasada ExtractVariables, oraz jak wdrożyć i uruchomić każdy przykład.
- Przykładowe wyodrębnianie i przypisywanie zmiennych (wyodrębnianie danych z wiadomości JSON i XML)
- Przykładowy dostęp do encji
- Przykłady stronicowania i pamięci podręcznej
- Przekierowywanie przykładowego docelowego adresu URL
- Przykładowe połączenie zasad
Identyfikatory URI
<ExtractVariables name="ExtractVariables-1">
<DisplayName>Extract a portion of the url path</DisplayName>
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/accounts/{id}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>Przyjrzyj się przykładowemu kodowi zasad powyżej. Element <URIPath> informuje zasadę ExtractVariables, że ma wyodrębnić informacje ze ścieżki URI. Element
<Pattern> określa wzorzec, który ma być zastosowany do ścieżki URI. Wzorzec jest traktowany jako prosty szablon, a nawiasy klamrowe oznaczają zmienną część ścieżki URI.
Nazwa zmiennej, która ma zostać ustawiona, jest określana przez wartość podaną w elemencie <VariablePrefix> oraz wartość ujętą w nawiasy klamrowe {} w elemencie <Pattern>. Obie wartości są połączone kropką, co daje nazwę zmiennej, np. urirequest.id. Jeśli nie ma elementu <VariablePrefix>, nazwa zmiennej to po prostu wartość ujęta w nawiasy klamrowe.
Załóżmy, że powyższy przykładowy kod zasady działa z tym żądaniem przychodzącym:
GET http://org1-test.apigee.net/svc1/accounts/12797282
Załóżmy, że podstawowa ścieżka serwera proxy interfejsu API to /svc1. Gdy Apigee Edge zastosuje do tego żądania przychodzącego powyższy kod zasady ExtractVariables, ustawi zmienną urirequest.id na 12797282. Gdy Apigee Edge wykona zasadę, kolejne zasady lub kod w procesie przetwarzania mogą odwoływać się do zmiennej o nazwie urirequest.id, aby uzyskać wartość ciągu znaków 12797282.
Na przykład ta zasada AssignMessage osadza wartość tej zmiennej w ładunku nowej wiadomości z żądaniem:
<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>
Parametry zapytania
<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>Załóżmy, że powyższy przykładowy kod zasady działa z tym żądaniem przychodzącym:
GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271
Gdy Apigee Edge zastosuje do tego żądania przychodzącego powyższy kod zasady ExtractVariables, ustawi zmienną queryinfo.dbncode na 88271. Po wykonaniu zasady przez Apigee Edge kolejne zasady lub kod w procesie przetwarzania mogą odwoływać się do zmiennej o nazwie queryinfo.dbncode, aby uzyskać wartość ciągu znaków 88271.
W proxy możesz teraz używać zmiennej queryinfo.dbncode.
Na przykład ta zasada AssignMessage kopiuje go do ładunku żądania:
<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>
Wiele parametrów
<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>Załóżmy, że projekt interfejsu API umożliwia określanie wielu parametrów zapytania o tej samej nazwie. Za pomocą tej zasady możesz wyodrębnić wartość wielu wystąpień parametru zapytania „w”. Aby odwołać się do tych parametrów zapytania w zasadach ExtractVariables, użyj indeksów. Pierwsze wystąpienie parametru zapytania nie ma indeksu, drugie ma indeks 2, trzecie – indeks 3 itd.
Załóżmy, że powyższy przykładowy kod zasady działa z tym żądaniem przychodzącym:
GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago
Gdy Apigee Edge zastosuje powyższy kod zasady ExtractVariables do tego przychodzącego żądania, ustawi zmienną queryinfo.firstWeather na Boston, a zmienną queryInfo.secondWeather na Chicago.
W serwerze proxy możesz teraz korzystać ze zmiennej queryinfo.firstWeather i queryinfo.secondWeather. Na przykład ta zasada AssignMessage kopiuje ją do ładunku żądania:
<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>
Nagłówki
<ExtractVariables name='ExtractVariable-OauthToken'>
<Source>request</Source>
<Header name="Authorization">
<Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
</Header>
<VariablePrefix>clientrequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>Załóżmy, że Twój interfejs API używa tokenów okaziciela OAuth 2.0. Rozważmy przykładowy kod zasad powyżej, który działa z żądaniem zawierającym token OAuth 2.0 z nagłówkiem takim jak ten:Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.
Załóżmy, że jako projektant interfejsu API chcesz użyć wartości tokena (ale nie całego nagłówka) jako klucza w wyszukiwaniu w pamięci podręcznej. Aby wyodrębnić token, możesz użyć kodu zasady ExtractVariables powyżej.
Gdy Apigee Edge zastosuje do tego nagłówka powyższy kod zasady ExtractVariables, ustawi zmienną clientrequest.oauthtoken na wartość TU08xptfFfeM7aS0xHqlxTgEAdAM.
W swoim serwerze proxy możesz teraz uzyskać dostęp do zmiennej clientrequest.oauthtoken. Na przykład ta zasada AssignMessage kopiuje ją do ładunku żądania:
<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>$
Rozważmy ten ładunek odpowiedzi JSON:
{ "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 } } } }] }
Gdy Apigee Edge zastosuje powyższy kod zasady ExtractVariables do tej wiadomości JSON, ustawi 2 zmienne: geocoderesponse.latitude i geocoderesponse.longitude. Obie zmienne używają tego samego prefiksu zmiennej: geocoderesponse. Sufiks tych zmiennych jest określony jednoznacznie przez atrybut name elementu <Variable>.
Zmienna geocoderesponse.latitude przyjmuje wartość 37.42291810. Zmienna geocoderesponse.longitude przyjmuje wartość -122.08542120.
W swoim serwerze proxy możesz teraz uzyskać dostęp do zmiennej geocoderesponse.latitude. Na przykład ta zasada AssignMessage kopiuje ją do nagłówka o nazwie „latitude” w odpowiedzi:
<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>
Oto przykładowa odpowiedź w formacie XML:
<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>Gdy Apigee Edge zastosuje powyższy kod zasady ExtractVariables do tego komunikatu XML, ustawi 3 zmienne: directionsresponse.travelmode,, directionsresponse.duration i directionsresponse.timeunit. Wszystkie zmienne mają ten sam prefiks directionsresponse. Sufiks tych zmiennych jest określony jednoznacznie przez atrybut name elementu <Variable>.
Zmienna directionsresponse.travelmode przyjmuje wartość DRIVING. Zmienna directionsresponse.duration przyjmuje wartość 19. Zmienna directionsresponse.timeunit przyjmuje wartość minutes.
Możesz teraz uzyskać dostęp do zmiennej directionresponse.travelmode w swoim serwerze proxy. Na przykład poniższa zasada AssignMessage kopiuje ją do nagłówka o nazwie „tmode” w odpowiedzi:
<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>
Informacje o zasadach ExtractVariables
Programiści interfejsów API tworzą proxy interfejsów API, które działają inaczej w zależności od treści wiadomości, w tym nagłówków, ścieżek URI, ładunków i parametrów zapytania. Często serwer proxy wyodrębnia część tych treści do użycia w instrukcji warunkowej. W tym celu użyj zasady ExtractVariables.
Podczas definiowania zasady ExtractVariables możesz wybrać:
- Nazwy zmiennych do ustawienia.
- Źródło zmiennych
- Liczba zmiennych do wyodrębnienia i ustawienia
Po wykonaniu zasada stosuje do treści wzorzec tekstu, a po znalezieniu dopasowania ustawia wartość wyznaczonej zmiennej z treścią. Inne zasady i kod mogą następnie wykorzystywać te zmienne, aby włączyć dynamiczne działanie lub wysyłać dane biznesowe do Edge API Analytics.
Aby dowiedzieć się, jak za pomocą funkcji ExtractVariables tworzyć raporty Analytics oparte na treściach, przeczytaj artykuł Analizowanie treści wiadomości interfejsu API za pomocą niestandardowych statystyk.
Zakres
Zmienne ustawione za pomocą zasady ExtractVariables mają zakres globalny. Oznacza to, że po zdefiniowaniu nowej zmiennej przez zasadę ExtractVariables możesz uzyskać do niej dostęp z dowolnej zasady lub kodu na dowolnym etapie przepływu (który jest wykonywany po zasadzie ExtractVariables). Obejmuje to:
- PreFlow: ProxyEndpoint i TargetEndpoint (żądanie i odpowiedź)
- PostFlow: ProxyEndpoint i TargetEndpoint (żądanie i odpowiedź)
- PostClientFlow: ProxyEndpoint (tylko odpowiedź, z użyciem zasad rejestrowania wiadomości)
- Przepływy błędów
Łączenie i tworzenie zmiennych
Zasady ExtractVariables wyodrębniają informacje z żądania lub odpowiedzi i zapisują je w zmiennej. W przypadku każdego typu informacji, które możesz wyodrębnić, np. ścieżki URI lub danych XML, określ wzorzec do dopasowania i nazwę zmiennej używanej do przechowywania wyodrębnionych informacji.
Sposób działania dopasowywania wzorców zależy jednak od źródła wyodrębniania. W sekcjach poniżej opisujemy 2 podstawowe kategorie informacji, które możesz wyodrębnić.
Dopasowywanie ścieżek URI, parametrów zapytania, nagłówków, parametrów formularza i zmiennych
Podczas wyodrębniania informacji ze ścieżki URI, parametrów zapytania, nagłówków, parametrów formularza i zmiennych używasz tagu <Pattern>, aby określić co najmniej 1 wzorzec do dopasowania. Na przykład w tym przykładzie zasad pokazano jeden pasujący wzorzec ścieżki URI:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>W tym przykładzie zmienna urirequest.pathSeg jest ustawiona na wartość, która pojawia się w proxy.pathsuffix po „/a/”. Załóżmy na przykład, że ścieżka podstawowa serwera proxy interfejsu API to /basepath/v1 . W przypadku żądania przychodzącego do http://myCo.com/basepath/v1/a/b zmienna przyjmuje wartość „b”.
Określanie wielu wzorców
Możesz określić wiele wzorców do dopasowania, które odpowiadają tagom <Pattern>, gdzie:
- Wszystkie wzorce są testowane pod kątem dopasowania.
- Jeśli żaden wzorzec nie pasuje, zasada nie wykonuje żadnych działań, a zmienne nie są tworzone.
- Jeśli pasuje więcej niż jeden wzorzec, do wyodrębniania używany jest wzorzec z najdłuższymi segmentami ścieżki.
- Jeśli 2 dopasowane wzorce mają takie same najdłuższe segmenty ścieżki, do wyodrębniania używany jest wzorzec określony jako pierwszy w zasadach.
W następnym przykładzie utworzysz zasadę zawierającą 3 wzorce dopasowania ścieżki URI:
<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>Załóżmy, że w przypadku serwera proxy interfejsu API ze ścieżką podstawową /basepath/v1 przychodzący adres URL żądania do serwera proxy interfejsu API ma taką postać:
http://myCo.com/basepath/v1/a/b
W tym przykładzie pierwszy wzorzec pasuje do identyfikatora URI, a zmienna urirequest.pathSeg ma wartość „b”.
Jeśli adres URL żądania to:
http://myCo.com/basepath/v1/a/b/c/d
...wtedy pasuje trzeci wzorzec, a zmienna urirequest.pathSeg przyjmuje wartość „d”.
Określanie wzorców z wieloma zmiennymi
W wzorcu dopasowania możesz określić wiele zmiennych. Możesz na przykład określić wzorzec dopasowania z 2 zmiennymi:
<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>Załóżmy , że serwer proxy interfejsu API ma ścieżkę podstawową /basepath/v1. W przypadku adresu URL żądania przychodzącego:
http://myCo.com/basepath/v1/a/b/c/d
...zmienna urirequest.pathSeg1 ma wartość „b”, a zmienna urirequest.pathSeg2 ma wartość „d”.
Dopasowywanie wielu wystąpień we wzorcu
Możesz też dopasowywać wzorce, gdy występuje wiele instancji elementu o tej samej nazwie. Możesz na przykład wysłać żądanie zawierające wiele parametrów zapytania lub wiele nagłówków o tej samej nazwie. To żądanie zawiera 2 parametry zapytania o nazwie „w”:
http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2
Aby odwołać się do tych parametrów zapytania w zasadach ExtractVariables, użyj indeksów. Pierwsze wystąpienie parametru zapytania nie ma indeksu, drugie ma indeks 2, trzecie – 3 itd. Na przykład te zasady wyodrębniają wartość drugiego parametru zapytania o nazwie „w” w żądaniu:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<QueryParam name="w.2">
<Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>
<VariablePrefix>urirequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>Zmienna urirequest.secondW ma wartość „2”. Jeśli w żądaniu brakuje drugiego parametru zapytania, zmienna urirequest.secondW jest pusta. Indeksowania używaj zawsze, gdy w żądaniu występuje wiele elementów o tej samej nazwie.
Używanie znaków specjalnych w wzorcu
Podczas dopasowywania ścieżek URI we wzorcu możesz używać symboli wieloznacznych „*” i „**”, gdzie:
- „*” pasuje do dowolnego segmentu ścieżki.
- „**” pasuje do wielu segmentów ścieżki.
Na przykład określasz wzorce dla elementu <URIPath> w sposób pokazany poniżej:
<URIPath>
<Pattern ignoreCase="true">/a/*/{id}</Pattern>
<Pattern ignoreCase="true">/a/**/{id}</Pattern>
</URIPath>Pierwszy wzorzec pasuje do żądań z sufiksami ścieżki (część ścieżki URI po ścieżce podstawowej), takimi jak „/a/b/c”, „/a/foo/bar” itp. Drugi wzorzec pasuje do dowolnej liczby segmentów ścieżki po „/a/”, np. „/a/foo/bar/baz/c”, a także „/a/b/c” i „/a/foo/bar”.
Podczas określania wzorców dla parametrów zapytania, nagłówków i parametrów formularza znak „*” oznacza dopasowanie dowolnej liczby znaków. Na przykład podczas dopasowywania nagłówka określ wzorzec w ten sposób:
*;charset={encoding}
Ten wzorzec pasuje do wartości „text/xml;charset=UTF-16” i „application/xml;charset=ASCII”.
Jeśli wartość przekazywana do zasady ExtractVariables zawiera znak specjalny, np. „{”, użyj znaku „%”, aby zmienić jego znaczenie. W tym przykładzie znaki „{” i „}” w wzorcu są poprzedzone znakiem zmiany znaczenia, ponieważ są używane jako znaki literału w wartości parametru zapytania:
<QueryParam>
<Pattern ignoreCase="true">%{user%} {name}</Pattern>
</QueryParam>W tym przykładzie wzorzec pasuje do wartości „{user} Steve”, ale nie do wartości „user Steve”.
Dopasowywanie plików JSON i XML
Podczas wyodrębniania danych z plików JSON i XML w zasadach określasz co najmniej 1 tag <Variable>. Tag <Variable> określa nazwę zmiennej docelowej, w której są przechowywane wyodrębnione informacje, oraz ścieżkę JsonPath (JSON) lub XPATH (XML) do wyodrębnionych informacji.
Wszystkie tagi <Variable> w zasadach są oceniane, dzięki czemu możesz wypełniać wiele zmiennych na podstawie pojedynczych zasad. Jeśli tag <Variable> nie odnosi się do prawidłowego pola w pliku JSON lub XML, odpowiednia zmienna nie zostanie utworzona.
Poniższy przykład pokazuje zasadę ExtractVariables, która wypełnia 2 zmienne z treści odpowiedzi w formacie 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>
Zapisywanie tej samej zmiennej w wielu miejscach
Zachowaj ostrożność podczas wybierania nazw zmiennych do ustawienia. Zasada jest wykonywana sekwencyjnie od pierwszego do ostatniego wzorca wyodrębniania. Jeśli zasada zapisuje wartość w tej samej zmiennej w kilku miejscach, wartość zmiennej jest określana przez ostatni zapis w zasadzie. (Może to być to, czego szukasz).
Załóżmy na przykład, że chcesz wyodrębnić wartość tokena, którą można przekazać w parametrze zapytania lub w nagłówku, jak pokazano poniżej:
<!-- 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>Określanie, co się stanie, gdy nie będzie dopasowania
Jeśli wzorzec nie pasuje, odpowiednia zmienna nie zostanie utworzona. Dlatego jeśli inna zasada odwołuje się do zmiennej, może to spowodować błąd.
Jedną z opcji jest ustawienie wartości <IgnoreUnresolvedVariables> na true w zasadach, które odwołują się do zmiennej, aby skonfigurować zasady tak, aby traktowały każdą nierozwiązywalną zmienną jako pusty ciąg znaków (null):
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Odwołanie do elementu
Dokumentacja elementu zawiera opis elementów i atrybutów zasady ExtractVariables.
<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>
Atrybuty elementu <ExtractVariables>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
| Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
|---|---|
| Obecność | Opcjonalnie |
| Typ | Ciąg znaków |
Element <Source>
(Opcjonalnie) Określa zmienną, która ma zostać przeanalizowana. Wartość <Source> jest domyślnie ustawiona na message. Wartość message jest zależna od kontekstu. W przypadku przepływu żądania symbol message odnosi się do wiadomości z żądaniem. W przepływie odpowiedzi zmienna message jest rozpoznawana jako wiadomość z odpowiedzią.
Zasady te są często używane do wyodrębniania informacji z wiadomości z prośbą lub odpowiedzią, ale można ich używać do wyodrębniania informacji z dowolnej zmiennej. Możesz go na przykład użyć do wyodrębniania informacji z elementu utworzonego przez zasady AccessEntity, z danych zwróconych przez zasady wywołania usługi lub z obiektu XML lub JSON.
Jeśli nie można rozpoznać <Source> lub jeśli zostanie rozpoznany jako typ inny niż wiadomość, zasada nie odpowie.
<Source clearPayload="true|false">request</Source>
| Domyślnie: | wiadomość |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
| clearPayload |
Ustaw wartość true, jeśli po wyodrębnieniu danych z ładunku określonego w elemencie <Source> chcesz go wyczyścić. |
fałsz |
Opcjonalny | Wartość logiczna |
Element <VariablePrefix>
(Opcjonalnie) Pełna nazwa zmiennej powstaje przez połączenie <VariablePrefix>, kropki i nazwy zdefiniowanej w {nawiasach klamrowych} w elemencie <Pattern> lub elemencie <Variable>. Na przykład:myprefix.id, myprefix.dbncode lub myprefix.oauthtoken.
<VariablePrefix>myprefix</VariablePrefix>
Załóżmy na przykład, że wartość parametru name to „user”.
- Jeśli nie podasz wartości
<VariablePrefix>, wyodrębnione wartości zostaną przypisane do zmiennej o nazwieuser. - Jeśli jako
<VariablePrefix>podano myprefix, wyodrębnione wartości są przypisywane do zmiennej o nazwiemyprefix.user.
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
Element <IgnoreUnresolvedVariables>
(Opcjonalnie) Ustaw na true, aby traktować każdą nierozwiązywalną zmienną jako pusty ciąg znaków (wartość null). Ustaw wartość false, jeśli chcesz, aby zasada zgłaszała błąd, gdy nie można rozpoznać żadnej zmiennej, do której się odwołuje.
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
| Domyślnie: | Fałsz |
| Obecność: | Opcjonalny |
| Typ: | Wartość logiczna |
Jeśli odwołanie XPath w <XMLPayload> nie zostanie rozwiązane, zasada zgłosi następujący błąd:
{ "fault":{ "faultstring":"Unresolved xpath path in policy policy_name.", "detail":{ "errorcode":"steps.extractvariables.InvalidXPath" } } }
Element <URIPath>
(Opcjonalnie, ale więcej informacji znajdziesz w wierszu „Obecność” w tabeli poniżej). Wyodrębnia wartość z elementu proxy.pathsuffix źródłowej wiadomości żądania. Ścieżka zastosowana do wzorca to proxy.pathsuffix, która nie zawiera ścieżki podstawowej proxy interfejsu API. Jeśli wiadomość źródłowa jest typu response, ten element nie ma żadnego działania.
<URIPath>
<Pattern ignoreCase="false">/accounts/{id}</Pattern>
</URIPath>Można użyć wielu elementów <Pattern>:
<URIPath>
<Pattern ignoreCase="false">/accounts/{id}</Pattern>
<Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern>
</URIPath>| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalnie. Musisz jednak podać co najmniej jeden z tych atrybutów:<URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> lub <XMLPayload>. |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
| ignoreCase | Określa, czy podczas dopasowywania wzorca ma być ignorowana wielkość liter. |
fałsz |
Opcjonalny | Wartość logiczna |
Element <QueryParam>
(Opcjonalnie, ale więcej informacji znajdziesz w wierszu „Obecność” w tabeli poniżej). Wyodrębnia wartość z określonego parametru zapytania w wiadomości źródłowej żądania. Jeśli wiadomość źródłowa jest typu odpowiedź, ten element nie robi nic.
<QueryParam name="code">
<Pattern ignoreCase="true">DBN{dbncode}</Pattern>
</QueryParam>Jeśli kilka parametrów zapytania ma tę samą nazwę, użyj indeksów, aby się do nich odwoływać:
<QueryParam name="w.2">
<Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalnie. Musisz jednak podać co najmniej jeden z tych atrybutów:<URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> lub <XMLPayload>. |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
| nazwa | Określa nazwę parametru zapytania. Jeśli kilka parametrów zapytania ma tę samą nazwę, użyj odwoływania indeksowanego, w którym pierwsza instancja parametru zapytania nie ma indeksu, druga ma indeks 2, trzecia 3 itd. |
Nie dotyczy |
Wymagane | Ciąg znaków |
Element <Header>
(Opcjonalnie, ale więcej informacji znajdziesz w wierszu „Obecność” w tabeli poniżej). Wyodrębnia wartość z określonego nagłówka HTTP w określonym żądaniu lub odpowiedzi. Jeśli kilka nagłówków ma taką samą nazwę, ich wartości są przechowywane w tabeli.
<!-- 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>
Jeśli kilka nagłówków ma tę samą nazwę, użyj indeksów, aby odwoływać się do poszczególnych nagłówków w tablicy:
<Header name="myHeader.2">
<Pattern ignoreCase="true">{secondHeader}</Pattern>
</Header>lub to polecenie, aby wyświetlić listę wszystkich nagłówków w tablicy:
<Header name="myHeader.values">
<Pattern ignoreCase="true">{myHeaders}</Pattern>
</Header>| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalnie. Musisz jednak podać co najmniej jeden z tych atrybutów:<URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> lub <XMLPayload>. |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
| nazwa | Określa nazwę nagłówka, z którego wyodrębniana jest wartość. Jeśli kilka nagłówków ma tę samą nazwę, użyj odwoływania indeksowanego, w którym pierwsza instancja nagłówka nie ma indeksu, druga ma indeks 2, trzecia – 3 itd. Aby uzyskać wszystkie nagłówki w tablicy, użyj .values. |
Nie dotyczy |
Wymagane | Ciąg znaków |
Element <FormParam>
(Opcjonalnie, ale więcej informacji znajdziesz w wierszu „Obecność” w tabeli poniżej). Wyodrębnia wartość z określonego parametru formularza w określonym żądaniu lub odpowiedzi. Parametry formularza można wyodrębnić tylko wtedy, gdy nagłówek Content-Type określonej wiadomości ma wartość application/x-www-form-urlencoded.
<FormParam name="greeting">
<Pattern>hello {user}</Pattern>
</FormParam>| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalnie. Musisz jednak podać co najmniej jeden z tych atrybutów:<URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> lub <XMLPayload>. |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
| nazwa | Nazwa parametru formularza, z którego wyodrębniasz wartość. |
Nie dotyczy |
Wymagane | Ciąg znaków |
Element <Variable>
(Opcjonalnie, ale więcej informacji znajdziesz w wierszu „Obecność” w tabeli poniżej). Określa nazwę zmiennej, z której ma zostać wyodrębniona wartość.
<Variable name="myVar">
<Pattern>hello {user}</Pattern>
</Variable>Aby wyodrębnić z zmiennej 2 wartości:
<Variable name="myVar">
<Pattern>hello {firstName} {lastName}</Pattern>
</Variable>| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalnie. Musisz jednak podać co najmniej jeden z tych atrybutów:<URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> lub <XMLPayload>. |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
| nazwa | Nazwa zmiennej, z której ma zostać wyodrębniona wartość. |
Nie dotyczy |
Wymagane | Ciąg znaków |
Element <JSONPayload>
(Opcjonalnie, ale więcej informacji znajdziesz w wierszu „Obecność” w tabeli poniżej). Określa wiadomość w formacie JSON, z której zostanie wyodrębniona wartość zmiennej. Wyodrębnianie danych w formacie JSON jest wykonywane tylko wtedy, gdy nagłówek Content-Type wiadomości ma wartość application/json.
<JSONPayload> <Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalnie. Musisz jednak podać co najmniej jeden z tych atrybutów:<URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> lub <XMLPayload>. |
| Typ: | Nie dotyczy |
Element <JSONPayload>/<Variable>
(Wymagany w elemencie JSONPayload). Określa zmienną, do której przypisywana jest wyodrębniona wartość. W elemencie <JSONPayload> możesz umieścić wiele tagów <Variable>, aby wypełnić wiele zmiennych.
<Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable>
| Domyślnie: | Nie dotyczy |
| Obecność: | Wymagany w elemencie JSONPayload. |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
| nazwa |
Określa nazwę zmiennej, do której zostanie przypisana wyodrębniona wartość. |
nazwa |
Wymagane | Ciąg znaków |
| typ | Określa typ danych wartości zmiennej. | Nie dotyczy | Opcjonalny |
Ciąg tekstowy. Do wyboru masz te opcje:
|
Element <JSONPayload>/<Variable>/<JSONPath>
(Wymagany w elemencie JSONPayload:Variable). Określa ścieżkę JSON używaną do wyodrębniania wartości z wiadomości w formacie JSON.
<Variable name="name"> <JSONPath>$.rss.channel.title</JSONPath> </Variable>
| Domyślnie: | Nie dotyczy |
| Obecność: | Wymagane |
| Typ: | Ciąg znaków |
Element <XMLPayload>
(Opcjonalnie, ale więcej informacji znajdziesz w wierszu „Obecność” w tabeli poniżej). Określa komunikat w formacie XML, z którego zostanie wyodrębniona wartość zmiennej. Ładunki XML są wyodrębniane tylko wtedy, gdy nagłówek Content-Type wiadomości ma wartość text/xml, application/xml lub 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>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalnie. Musisz jednak podać co najmniej jeden z tych atrybutów:<URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> lub <XMLPayload>. |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
stopPayloadProcessing |
Ustaw wartość |
fałsz |
Opcjonalny | Wartość logiczna |
Element <XMLPayload>/<Namespaces>
(Opcjonalnie) Określa przestrzeń nazw, która ma być używana podczas obliczania wyrażenia XPath. Jeśli w wyrażeniach XPath używasz przestrzeni nazw, musisz je zadeklarować w tym miejscu, jak pokazano w przykładzie poniżej.
<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>
Jeśli w wyrażeniach XPath nie używasz przestrzeni nazw, możesz pominąć lub wykomentować element <Namespaces>, jak pokazano w tym przykładzie:
<XMLPayload stopPayloadProcessing="false"> <!-- <Namespaces/> --> <Variable name="legName" type="string"> <XPath>/Directions/route/leg/name</XPath> </Variable> </XMLPayload>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
prefix |
Prefiks przestrzeni nazw. |
Nie dotyczy |
Wymagane | Ciąg znaków |
Element <XMLPayload>/<Variable>
(Opcjonalnie) Określa zmienną, do której zostanie przypisana wyodrębniona wartość.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność | Typ |
|---|---|---|---|---|
| nazwa |
Określa nazwę zmiennej, do której zostanie przypisana wyodrębniona wartość. |
nazwa |
Wymagane | Ciąg znaków |
| typ | Określa typ danych wartości zmiennej. | Wartość logiczna | Opcjonalny |
Ciąg tekstowy. Do wyboru masz te opcje:
|
Element <XMLPayload>/<Variable>/<XPath>
(Wymagany w elemencie XMLPayload:Variable). Określa ścieżkę XPath zdefiniowaną dla zmiennej. Obsługiwane są tylko wyrażenia XPath 1.0.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
Przykład z przestrzenią nazw. Jeśli w wyrażeniach XPath używasz przestrzeni nazw, musisz zadeklarować je w sekcji <XMLPayload><Namespaces> zasad.
<Variable name="name" type="boolean"> <XPath>/foo:test/foo:example</XPath> </Variable>
| Domyślnie: | Nie dotyczy |
| Obecność: | Wymagane |
| Typ: | Ciąg znaków |
Odwołanie do błędu
W tej sekcji opisano kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wyzwala błąd. Warto o tym wiedzieć, jeśli rozwijasz reguły błędów, aby obsługi błędów. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami i postępowaniu z błędami
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
| Kod błędu | Stan HTTP | Przyczyna | Napraw |
|---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
Ten błąd występuje, gdy:
|
build |
steps.extractvariables.ImmutableVariable |
500 | Zmiennej używanej w zasadzie nie można zmienić. Zasada nie mogła tego ustawić . | |
steps.extractvariables.InvalidJSONPath |
500 | Ten błąd występuje, jeśli w elemencie JSONPath metody JSON używana jest nieprawidłowa ścieżka JSON
. Jeśli na przykład ładunek JSON nie ma obiektu Name,
ale podasz w zasadzie Name, to ten błąd występuje. |
build |
steps.extractvariables.JsonPathParsingFailure |
500 | Ten błąd występuje, gdy zasada nie może przeanalizować ścieżki JSON i
wyodrębnienia danych ze zmiennej przepływu określonej w elemencie Source. Zwykle to
dzieje się, jeśli zmienna przepływu podana w elemencie Source nie istnieje w bieżącej
przepływu danych. |
build |
steps.extractvariables.SetVariableFailed |
500 | Ten błąd występuje, jeśli zasada nie może ustawić wartości zmiennej. Błąd ten występuje zazwyczaj przy próbie przypisania wartości do wielu zmiennych, których nazwy zaczynają się z tymi samymi słowami w zagnieżdżonym formacie oddzielonych kropkami. | build |
steps.extractvariables.SourceMessageNotAvailable |
500 | Ten błąd występuje, jeśli komunikat
zmienna określona w elemencie Source zasady
jest:
|
build |
steps.extractvariables.UnableToCast |
500 | Ten błąd występuje, jeśli zasada nie może rzutować wyodrębnionych elementów do zmiennej. Zwykle dzieje się tak, gdy próbujesz ustawić wartość z jednego typu danych na zmienną innego typu danych. | build |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego tę zasadę.
| Nazwa błędu | Przyczyna | Napraw |
|---|---|---|
NothingToExtract |
Jeśli zasada nie zawiera żadnego elementu URIPath, QueryParam,
Header, FormParam, XMLPayload lub JSONPayload,
wdrożenie serwera proxy interfejsu API się nie uda, ponieważ nie ma niczego do wyodrębnienia. |
build |
NONEmptyPrefixMappedToEmptyURI |
Ten błąd występuje, jeśli zasada ma prefiks zdefiniowany w
Namespace w elemencie XMLPayload, ale żaden identyfikator URI nie jest
zdefiniowano jego definicję. |
build |
DuplicatePrefix |
Ten błąd występuje, jeśli zasada ma ten sam prefiks zdefiniowany więcej niż
tylko raz w elemencie Namespace w elemencie XMLPayload. |
build |
NoXPathsToEvaluate |
Jeśli zasada nie ma elementu XPath w parametrze
XMLPayload, wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetlany jest ten błąd.
|
build |
EmptyXPathExpression |
Jeśli zasada ma puste wyrażenie XPath w elemencie XMLPayload
, nie uda się wdrożyć serwera proxy interfejsu API. |
build |
NoJSONPathsToEvaluate |
Jeśli zasada nie ma elementu JSONPath w parametrze
JSONPayload, wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetlany jest ten błąd. |
build |
EmptyJSONPathExpression |
Jeśli zasada ma puste wyrażenie XPath w parametrze
XMLPayload, nie udało się wdrożyć serwera proxy interfejsu API. |
build |
MissingName |
Jeśli zasada nie ma atrybutu name w żadnej zasadzie
elementy takie jak QueryParam, Header, FormParam lub
Variable, jeśli jest to wymagane, nie uda się wdrożyć serwera proxy interfejsu API. |
build |
PatternWithoutVariable |
Jeśli zasada nie ma określonej zmiennej w elemencie Pattern,
wdrożenie serwera proxy interfejsu API się nie uda. Element Pattern wymaga nazwy
zmienną, w której będą przechowywane wyodrębnione dane. |
build |
CannotBeConvertedToNodeset |
Jeśli zasada zawiera wyrażenie XPath, w którym typ Variable
jest zdefiniowana jako nodeset,
ale wyrażenia nie można przekonwertować na zbiór węzłów, wdrożenie serwera proxy interfejsu API się nie uda. |
build |
JSONPathCompilationFailed |
Zasada nie mogła skompilować określonej ścieżki JSON. | |
InstantiationFailed |
Nie udało się utworzyć wystąpienia zasady. | |
XPathCompilationFailed |
Jeśli prefiks lub wartość w elemencie XPath nie są częścią żadnej
zadeklarowanych w zasadach przestrzeni nazw, a następnie wdrożenie serwera proxy interfejsu API
niepowodzenie. |
build |
InvalidPattern |
Jeśli definicja elementu Pattern jest nieprawidłowa w którymkolwiek z elementów, takich jak URIPath,
QueryParam, Header, FormParam, XMLPayload
lub JSONPayload, wdrożenie
Błąd serwera proxy interfejsu API.
|
build |
Zmienne błędów
Te zmienne są ustawiane, gdy ta zasada wywołuje błąd w czasie działania. Aby dowiedzieć się więcej, zapoznaj się z artykułem Co musisz wiedzieć o błędach związanych z naruszeniem zasad.
| Zmienne | Gdzie | Przykład |
|---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli Błędy czasu działania powyżej. Nazwa błędu to ostatnia część kodu błędu. | fault.name = "SourceMessageNotAvailable" |
extractvariables.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | extractvariables.EV-ParseJsonResponse.failed = true |
Przykładowa odpowiedź na błąd
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
Przykładowa reguła błędu
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>
Schematy
Powiązane artykuły
Analizowanie treści wiadomości interfejsu API za pomocą niestandardowych statystyk