Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Zasada Extractvariables wyodrębnia treść z żądania lub odpowiedzi i ustawia wartość zmienną dla tej treści. Możesz wyodrębnić dowolną część wiadomości, w tym nagłówki, ścieżki URI, ładunki JSON/XML, formularz i parametry zapytania. Zasada działa przez zastosowanie wzorca tekstu do wiadomości i po znalezieniu dopasowania ustawia zmienną z określoną treścią wiadomości.
Chociaż często używasz tej zasady do wyodrębniania informacji z wiadomości z prośbą lub odpowiedzią, może również użyć go do wyodrębnienia informacji z innych źródeł, w tym z jednostek utworzonych przez Zasady AccessEntity, obiekty XML lub obiekty JSON.
Po wyodrębnieniu określonej treści wiadomości możesz odwołać się do zmiennej w innym miejscu zasad przetwarzania żądań i odpowiedzi.
Filmy
Obejrzyj poniższe filmy, by dowiedzieć się więcej o zasadzie Extractvariables.
Wideo | Opis |
---|---|
Wyodrębnianie zmiennych z ładunku XML | Wyodrębnianie zmiennych z ładunku XML za pomocą zasady Wyodrębnianie zmiennej. |
Wyodrębnianie zmiennych z ładunku JSON | Wyodrębnianie zmiennych z ładunku JSON za pomocą zasady wyodrębniania zmiennej. |
Wyodrębnianie zmiennych z parametrów | Wyodrębnianie zmiennych z parametrów, takich jak zapytanie, nagłówek, formularz lub identyfikator URI. |
Wyodrębnianie zmiennych na podstawie parametrów wielowartościowych | Wyodrębnianie zmiennych z parametrów wielowartościowych. |
Wyodrębnianie zmiennych z parametru zapytania (Classic Edge) | Wyodrębnianie zmiennych z parametru zapytania za pomocą interfejsu użytkownika klasycznej wersji Edge. |
Wyodrębnianie zmiennych z ładunku XML lub JSON (Classic Edge) | Wyodrębnianie zmiennych z ładunku XML lub JSON za pomocą interfejsu użytkownika klasycznej wersji Edge. |
Przykłady
Poniższe przykłady kodu zasad pokazują, jak wyodrębniać zmienne z następujących typów artefakty:
GitHub
Te linki wskazują przykłady działającego serwera proxy interfejsu API, które możesz wdrożyć i uruchomić w Edge. Ta korzystają z metody ExtractZmienne i znajdują się one w repozytorium interfejsu API platformy api-platform-samples w Apigee GitHub. W plikach README wyjaśnia się, jak w poszczególnych przypadkach jest używany obiekt Extractvariables oraz jak wdrażać i uruchomić każdą próbkę.
- Wyodrębnij i przypisać przykładowe zmienne (wyodrębnianie danych z wiadomości JSON i XML)
- Dostęp próbka encji
- Podział na strony i próbka w pamięci podręcznej
- Zmień trasę przykładowy adres URL
- Próbka kompozycji 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>
Przeanalizuj przykładowy kod zasad powyżej. Element <URIPath>
informuje
Zasada ExtractZmienne do wyodrębniania informacji ze ścieżki identyfikatora URI.
Element <Pattern>
określa wzorzec stosowany do ścieżki identyfikatora URI.
jest traktowany jako prosty szablon, w którym nawiasy klamrowe wskazują różne części
ścieżki identyfikatora URI.
Nazwa zmiennej, która ma zostać ustawiona, zależy od wartości określonej w kolumnie
<VariablePrefix>
oraz wartość w nawiasach klamrowych {}.
w elemencie <Pattern>
. Dwie wartości są połączone kropką
w wyniku czego nazwa zmiennej to urirequest.id
. W przypadku braku
<VariablePrefix>
, nazwa zmiennej jest tylko wartością
w nawiasach klamrowych.
Przykładowy kod zasad powyżej współpracuje z tym żądaniem przychodzącym:
GET http://org1-test.apigee.net/svc1/accounts/12797282
Załóżmy, że ścieżka bazowa serwera proxy interfejsu API to /svc1
. Gdy Apigee Edge stosuje
Wyodrębnić podany wyżej kod zasady Extractvariables na to przychodzące żądanie, ponieważ ustawia on zmienną
urirequest.id
do 12797282
. Gdy Apigee Edge uruchomi zasadę,
kolejne zasady lub kod w procesie przetwarzania mogą odnosić się do zmiennej o nazwie
urirequest.id
, aby pobrać wartość ciągu znaków 12797282
.
Na przykład następująca zasada AssignMessage osadza wartość tej zmiennej w funkcji ładunek nowej wiadomości żądania:
<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>
Przykładowy kod zasad powyżej współpracuje z tym żądaniem przychodzącym:
GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271
Gdy Apigee Edge zastosuje powyższy kod zasady ExtractZmienne do tego żądania przychodzącego,
ustawia zmienną queryinfo.dbncode
na 88271
. Po Apigee Edge
uruchamia zasadę, kolejne zasady lub kod w procesie przetwarzania mogą odnosić się
o nazwie queryinfo.dbncode
, aby otrzymać wartość ciągu znaków 88271
.
Możesz teraz uzyskać dostęp do zmiennej queryinfo.dbncode
w serwerze proxy.
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"> <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ślenie wielu parametrów zapytania z takim samym imię i nazwisko. Za pomocą tej zasady możesz wyodrębniać wartość wielu instancji zapytania „w”. Aby odwołać się do tych parametrów zapytania w zasadzie Extractvariables, musisz: używa indeksów, gdzie pierwsze wystąpienie parametru zapytania nie ma indeksu, a drugie jest indeks 2, trzeci w indeksie 3 itd.
Przykładowy kod zasad powyżej współpracuje z tym żądaniem przychodzącym:
GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago
Gdy Apigee Edge zastosuje powyższy kod zasady ExtractZmienne do tego żądania przychodzącego,
ustawia zmienną queryinfo.firstWeather
na Boston
, a
zmienną queryInfo.secondWeather
na Chicago
.
Masz teraz dostęp do zmiennej queryinfo.firstWeather
queryinfo.secondWeather w
Twój serwer proxy. Na przykład ta zasada AssignMessage kopiuje ją do ładunku
żądanie:
<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. Zobacz przykładowy kod zasad powyżej
pracy z żądaniem z tokenem OAuth w wersji 2.0 z nagłówkiem podobnym do tego:
Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.
Jako projektant interfejsu API załóżmy, że chcesz użyć wartości tokena (a nie całej wartości nagłówek) jako klucz przy wyszukiwaniu pamięci podręcznej. Możesz użyć powyższego kodu zasady Extractvariables, i wyodrębnij token.
Gdy Apigee Edge zastosuje powyższy kod zasady ExtractVariables do tego nagłówka,
ustaw zmienną clientrequest.oauthtoken
na
TU08xptfFfeM7aS0xHqlxTgEAdAM
Dostęp do zmiennej clientrequest.oauthtoken
możesz teraz uzyskać w
serwera proxy. Na przykład ta zasada AssignMessage kopiuje ją do ładunku
żądanie:
<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ż taki ł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,
ustawia dwie zmienne: geocoderesponse.latitude
oraz
geocoderesponse.longitude
Obie zmienne używają tego samego prefiksu zmiennej
geocoderesponse
Sufiks tych zmiennych jest określany przez tag
Atrybut name
elementu <Variable>
.
Zmienna geocoderesponse.latitude
pobiera wartość
37.42291810
Zmienna geocoderesponse.longitude
pobiera wartość
-122.08542120
Dostęp do zmiennej geocoderesponse.latitude
możesz teraz uzyskać w
serwera proxy. Na przykład następująca zasada AssignMessage skopiuje 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>
Przeanalizujmy ten ładunek odpowiedzi 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,
ustawia trzy zmienne: directionsresponse.travelmode,
directionsresponse.duration
i directionsresponse.timeunit
. Wszystkie
korzystają z tego samego prefiksu zmiennej directionsresponse
. Sufiks dla argumentu
te zmienne są wyraźnie określone przez tag elementu <Variable>
name
.
Zmienna directionsresponse.travelmode
pobiera wartość
DRIVING
Zmienna directionsresponse.duration
pobiera wartość
19
Zmienna directionsresponse.timeunit
pobiera wartość
minutes
Dostęp do zmiennej directionresponse.travelmode
możesz teraz uzyskać w
Twój serwer proxy. Na przykład ta zasada AssignMessage skopiuje 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 zasadzie Extractvariables
Programiści API tworzą serwery proxy interfejsów API, które działają różnie w zależności od treści wiadomości łącznie z nagłówkami, ścieżkami URI, ładunkami i parametrami zapytania. Serwer proxy często wyodrębnia część fragmentu tej treści do wykorzystania w instrukcji warunku. Użyj do tego zasady Extractvariables to osiągnąć.
Definiując zasadę Extractvariables, możesz wybrać:
- Nazwy zmiennych, które mają zostać ustawione
- Źródło zmiennych
- Liczba zmiennych do wyodrębnienia i ustawienia
Gdy zasada jest uruchamiana, stosuje do treści wzorzec tekstowy, a po znalezieniu dopasowania ustawia wartość wyznaczonej zmiennej z treścią. Inne zasady i kod, które mogą być następnie wykorzystywane tych zmiennych, aby umożliwić dynamiczne zachowanie lub wysyłać firmowe bazy danych do Edge API Analytics.
Aby dowiedzieć się, jak użyć metody ExtractZmienne do tworzenia raportów Analytics opartych na treści: Analizuj treść komunikatu dotyczącego interfejsu API za pomocą niestandardowych statystyk.
Zakres
Zmienne ustawione za pomocą zasady Extractvariables mają zakres globalny. Oznacza to, że po Zasada Extractvariables definiuje nową zmienną. Dostęp do tej zmiennej możesz uzyskać z dowolnej zasady lub na dowolnym etapie przepływu (wykonywanym po zastosowaniu zasady Extractvariables). Ten zawiera:
- PreFlow: ProxyEndpoint i TargetEndpoint (żądanie i odpowiedź)
- PostFlow: ProxyEndpoint i TargetEndpoint (żądanie i odpowiedź)
- PostClientFlow: ProxyEndpoint (tylko odpowiedź, korzystając z parametru zasady logowania wiadomości)
- Przepływy błędów
Dopasowywanie i tworzenie zmiennych
Zasada Extractvariables wyodrębnia informacje z żądania lub odpowiedzi i zapisuje, do zmiennej. W przypadku każdego typu informacji, który można wyodrębnić, takich jak ścieżka identyfikatora URI czy XML, musisz określić wzorzec do dopasowania oraz nazwę zmiennej używanej do przechowywania danych wyodrębnionych informacji.
Sposób dopasowywania wzorców zależy jednak od źródła wyodrębnienia. Poniżej w sekcjach opisują 2 podstawowe kategorie informacji, które można wyodrębnić.
Pasujące ścieżki URI, parametry zapytania, nagłówki, parametry formularza i zmienne
Podczas wyodrębniania informacji ze ścieżki identyfikatora URI, parametrów zapytania, nagłówków, parametrów formularza za pomocą tagu <Pattern>, aby określić jedną lub więcej zmiennych, wzorcem. Na przykład w poniższym przykładzie zasady widać jeden wzorzec dopasowania dla ścieżkę identyfikatora 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 ustawiona została zmienna urirequest.pathSeg do dowolnego tekstu znajdującego się w pliku proxy.pathsuffix po „/a/”. Na przykład załóżmy, że ścieżka podstawowa dla argumentu Serwer proxy interfejsu API to /basepath/v1 . W przypadku żądania przychodzącego na http://myCo.com/basepath/v1/a/b jest ustawiona na „b”.
Określanie wielu wzorców
Możesz określić wiele wzorców do dopasowania odpowiadających tagom <Pattern>, gdzie:
- Wszystkie wzorce są testowane pod kątem dopasowania.
- Jeśli żaden z wzorców nie pasuje do wzorca, zasada nie wykonuje żadnych działań, a zmienne nie są zgodne. Utworzono.
- Jeśli pasuje więcej niż jeden wzorzec, dla parametru wyodrębniania.
- Jeśli dwa dopasowane wzorce mają takie same najdłuższe segmenty ścieżki, to wzorzec określony jako pierwszy w która jest używana do wyodrębniania.
W następnym przykładzie utworzysz zasadę zawierającą 3 wzorce pasujące do identyfikatora URI ścieżka:
<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ą bazową /basepath/v1 adresem URL żądania przychodzącego do serwera proxy interfejsu API ma postać:
http://myCo.com/basepath/v1/a/b
W tym przykładzie pierwszy wzorzec pasuje do identyfikatora URI, a zmienna urirequest.pathSeg to ustawionym na „b”.
Jeśli URL żądania to:
http://myCo.com/basepath/v1/a/b/c/d
...dopasowany jest trzeci wzorzec, a zmienna urirequest.pathSeg jest ustawionym na „d”.
Określanie wzorców z wieloma zmiennymi
Możesz podać wiele zmiennych dla pasującego wzorca. Na przykład możesz podać pasującego do wzorca 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>
Ponownie załóżmy , że dla żądania przychodzącego użyto serwera proxy interfejsu API ze ścieżką podstawową /basepath/v1 Adres URL:
http://myCo.com/basepath/v1/a/b/c/d
...zmienna urirequest.pathSeg1 jest ustaw na „b” a zmienna urirequest.pathSeg2 to ustawionym na „d”.
Dopasowywanie wielu wystąpień we wzorcu
Wzorce możesz też dopasowywać, gdy istnieje wiele wystąpień 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 zasadzie Extractvariables, musisz użyć indeksów, przy czym pierwsze wystąpienie parametru zapytania nie ma indeksu, drugie jest w indeksie 2, a trzecie na poziomie indeks 3 itd. Na przykład ta zasada wyodrębnia 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 to ustaw wartość „2”. Jeśli drugi parametr zapytania zostanie pominięty w żądaniu, zmienna urirequest.secondW będzie: puste. Używaj indeksowania, gdy w żądaniu jest wiele elementów o tej samej nazwie.
Używanie znaków specjalnych we wzorze
Dopasowując ścieżki identyfikatorów URI, możesz użyć znaku „*” i „**” symbole wieloznaczne we wzorcu, gdzie:
- „*” pasuje do dowolnego odcinka ścieżki
- „**” pasuje do wielu segmentów ścieżki
Możesz na przykład określić wzorce elementu <URIPath> w następujący sposób: poniżej:
<URIPath> <Pattern ignoreCase="true">/a/*/{id}</Pattern> <Pattern ignoreCase="true">/a/**/{id}</Pattern> </URIPath>
Pierwszy wzorzec dopasowuje żądania ze ścieżką ułamkową (część ścieżki URI następujące po ścieżki podstawowej), takie jak „/a/b/c”, „/a/foo/bar” itd. Drugi wzorzec pasuje do dowolnej liczby ścieżek po „/a/”, np. „/a/foo/bar/baz/c” czy „/a/b/c”. i „/a/foo/bar”.
Przy określaniu wzorców zapytań, nagłówków i parametrów formularza znak „*” oznacza dopasowanie dowolnej liczby znaków. Na przykład podczas dopasowywania nagłówka podaj parametr jako:
*;charset={encoding}
Ten wzorzec pasuje do wartości „text/xml;charset=UTF-16” oraz „application/xml;charset=ASCII”.
Jeśli wartość przekazywana do zasady Extractvariables zawiera znak specjalny, taki jak „{”, użyj funkcji „%” aby go zmienić. W poniższym przykładzie zmienia się znaczenie znaku „{” i "}" znaki we wzorcu, ponieważ są one używane jako znaki w wartości zapytania :
<QueryParam> <Pattern ignoreCase="true">%{user%} {name}</Pattern> </QueryParam>
W tym przykładzie wzorzec pasuje do wartości „{user} Steve” , ale nie z wartością „użytkownik Stefana”.
Pasujące formaty JSON i XML
Podczas wyodrębniania danych z kodów JSON i XML musisz określić w zasadzie co najmniej 1 tag <Variable>. Tag <Variable> określa parametr nazwa zmiennej docelowej, w której przechowywane są wyodrębnione informacje, oraz ścieżka JsonPath (JSON) lub XPATH (XML) do wyodrębnionych informacji.
wszystkie tagi <Variable> w zasadach; są oceniane, dzięki czemu można uzupełnić wiele zmiennych w jednej zasadzie. Jeśli tag <Variable> nie będzie do prawidłowego pola w formacie JSON lub XML, odpowiednia zmienna nie jest Utworzono.
Poniższy przykład pokazuje zasadę Extractvariables, która wypełnia 2 zmienne z parametru Treść JSON odpowiedzi:
<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>
Pisanie do ta sama zmienna w wielu miejscach,
Zachowaj ostrożność podczas wybierania nazw zmiennych, które chcesz ustawić. Zasada jest wykonywana sekwencyjnie z od pierwszego wzorca wyodrębniania do ostatniego. Jeśli zasada zapisuje wartość w tej samej zmiennej z poziomu w wielu miejscach, ostatni zapis w zasadzie określa wartość zmiennej. (Może to być w dowolnym momencie).
Załóżmy np., że chcesz wyodrębnić wartość tokena, która może być przekazywana w parametrze zapytania lub w nagłówku, jak 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>
Kontrola nad tym, co się dzieje, gdy nie występuje dopasowanie
Jeśli wzór nie pasuje, nie zostanie utworzona odpowiednia zmienna. Dlatego, jeśli inna zasada odwołuje się do zmiennej, może to spowodować błąd.
Jedną z opcji jest ustawienie atrybutu <IgnoreUnresolvedVariables>
na
true (prawda) w zasadzie, która odwołuje się do zmiennej, aby skonfigurować zasadę traktowania
wszelkie niemożliwe do rozwiązania zmienne w postaci pustego ciągu (null):
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Odwołanie do elementu
Dokumentacja elementu opisuje elementy i atrybuty zmiennych ExtractZmienne .
<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> atrybuty
<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 |
<Source> element
(Opcjonalnie) Określa zmienną do analizy. Wartość
<Source>
ma domyślną wartość message
. Wartość message
jest zależny od kontekstu. W ramach procesu żądania message
przechodzi do komunikatu z żądaniem. W
w ramach procesu odpowiedzi, message
przejdzie do komunikatu z odpowiedzią.
Chociaż często używasz tej zasady do wyodrębniania informacji z wiadomości z prośbą lub odpowiedzią,
może go użyć do wyodrębnienia informacji z dowolnej zmiennej. Możesz na przykład użyć go do wyodrębnienia
informacje z jednostki utworzonej przez zasadę AccessEntity, na podstawie danych
zwracanych przez usługę Usługa
zasady objaśnień albo wyodrębnij informacje z obiektu XML lub JSON.
Jeśli nie można znaleźć wartości <Source>
lub zmienić typ na inny niż wiadomość,
zasady nie odpowiadają.
<Source clearPayload="true|false">request</Source>
Domyślne: | wiadomość |
Obecność: | Opcjonalnie |
Typ: | Ciąg znaków |
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
clearPayload |
Ustaw jako true, jeśli chcesz wyczyścić ładunek określony w
<Source> po wyodrębnieniu z niego danych. |
fałsz |
Opcjonalnie | Wartość logiczna |
<VariablePrefix> element
(Opcjonalnie) Pełna nazwa zmiennej tworzy się, łącząc funkcję
<VariablePrefix>
, kropkę oraz nazwę zdefiniowaną w {nawiasach klamrowych} w
<Pattern>
lub <Variable>. Na przykład:
myprefix.id
, myprefix.dbncode
lub myprefix.oauthtoken.
<VariablePrefix>myprefix</VariablePrefix>
Załóżmy na przykład, że wartością nazwy jest „użytkownik”.
- Jeśli
<VariablePrefix>
nie jest określony, wyodrębnione wartości są przypisane do zmiennej o nazwieuser
. - Jeśli
<VariablePrefix>
jest określony jako moj prefiks, wyodrębniony wartości są przypisane do zmiennej o nazwiemyprefix.user
.
Domyślne: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Ciąg znaków |
<IgnoreUnresolvedVariables> element
(Opcjonalnie) Ustaw wartość true
, aby traktować każdą zmienną, której nie można rozstrzygnąć jako pusty ciąg znaków.
(null). Ustaw jako false
, jeśli zasada ma powodować błąd w przypadku odwołania
jest nierozpoznawalna.
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Domyślne: | Fałsz |
Obecność: | Opcjonalnie |
Typ: | Wartość logiczna |
Jeśli odwołanie XPath jest nierozstrzygnięte w elemencie <XMLPayload>
, zasada zgłasza
ten błąd:
{ "fault":{ "faultstring":"Unresolved xpath path in policy policy_name.", "detail":{ "errorcode":"steps.extractvariables.InvalidXPath" } } }
<URIPath> element
(Opcjonalnie, więcej informacji znajdziesz w wierszu Obecność w tabeli poniżej). Wyodrębnia wartość z serwera proxy.pathsuffix wiadomości źródłowej żądania. Ścieżka zastosowana do wzorzec to proxy.pathsuffix, który nie zawiera ścieżki bazowej serwera proxy interfejsu API. Jeśli komunikat źródłowy przechodzi do typu odpowiedzi, to ten element nie wykonuje ż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ślne: | Nie dotyczy |
Obecność: | Opcjonalnie: Musisz jednak uwzględnić co najmniej jeden z następujących elementów:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> lub
<XMLPayload>. |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
ignoreCase | Określa, że wielkość liter ma być ignorowana podczas dopasowywania do ojca. |
fałsz |
Opcjonalnie | Wartość logiczna |
<QueryParam> element
(Opcjonalnie, 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 przechodzi do wiadomości typu odpowiedź, to ten element nic.
<QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam>
Jeśli wiele parametrów zapytania ma tę samą nazwę, użyj indeksów, aby odwołać się do tych parametrów:
<QueryParam name="w.2"> <Pattern ignoreCase="true">{secondW}</Pattern> </QueryParam>
Domyślne: | Nie dotyczy |
Obecność: | Opcjonalnie: Musisz jednak uwzględnić co najmniej jeden z następujących elementó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 parametr tej samej nazwy, użyj odwołania do zindeksowanego, gdzie pierwsze wystąpienie parametru zapytania nie ma indeksu, druga jest w indeksie 2, trzecia w indeksie 3 itd. |
Nie dotyczy |
Wymagane | Ciąg znaków |
<Header> element
(Opcjonalnie, więcej informacji znajdziesz w wierszu Obecność w tabeli poniżej). Wyodrębnia wartość z określonego nagłówka HTTP określonego komunikatu żądania lub odpowiedzi. Jeśli wiele nagłówków zawiera o tej samej nazwie, ich wartości są przechowywane w tablicy.
<!-- 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 wiele nagłówków ma tę samą nazwę, użyj indeksów, aby odwołać się do poszczególnych nagłówków w sekcji tablica:
<Header name="myHeader.2"> <Pattern ignoreCase="true">{secondHeader}</Pattern> </Header>
Możesz też wykonać to polecenie, aby wyświetlić wszystkie nagłówki w tablicy:
<Header name="myHeader.values"> <Pattern ignoreCase="true">{myHeaders}</Pattern> </Header>
Domyślne: | Nie dotyczy |
Obecność: | Opcjonalnie: Musisz jednak uwzględnić co najmniej jeden z następujących elementó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 pochodzi wartość. Jeśli kilka
nagłówki mają taką samą nazwę, użyj odniesienia do zindeksowania, gdzie pierwsze wystąpienie ciągu
nagłówek nie ma indeksu, drugi jest w indeksie 2, trzeci w indeksie 3 itd. Użyj funkcji
.values , aby pobrać wszystkie nagłówki w tablicy. |
Nie dotyczy |
Wymagane | Ciąg znaków |
<FormParam> element
(Opcjonalnie, więcej informacji znajdziesz w wierszu Obecność w tabeli poniżej). Wyodrębnia wartość
z określonego parametru formy w konkretnej wiadomości żądanie lub odpowiedzi. Parametry formularza
można wyodrębnić tylko wtedy, gdy nagłówek Content-Type
określonego komunikatu jest
application/x-www-form-urlencoded
<FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam>
Domyślne: | Nie dotyczy |
Obecność: | Opcjonalnie: Musisz jednak uwzględnić co najmniej jeden z następujących elementó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 pochodzi wartość. |
Nie dotyczy |
Wymagane | Ciąg znaków |
<Variable> element
(Opcjonalnie, więcej informacji znajdziesz w wierszu Obecność w tabeli poniżej). Określa nazwa zmiennej, z której ma zostać pobrana wartość.
<Variable name="myVar"> <Pattern>hello {user}</Pattern> </Variable>
Aby wyodrębnić ze zmiennej 2 wartości:
<Variable name="myVar"> <Pattern>hello {firstName} {lastName}</Pattern> </Variable>
Domyślne: | Nie dotyczy |
Obecność: | Opcjonalnie: Musisz jednak uwzględnić co najmniej jeden z następujących elementó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ć pobrana wartość. |
Nie dotyczy |
Wymagane | Ciąg znaków |
<JSONPayload> element
(Opcjonalnie, 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. JSON wyodrębnianie 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ślne: | Nie dotyczy |
Obecność: | Opcjonalnie: Musisz jednak uwzględnić co najmniej jeden z następujących elementów:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> lub
<XMLPayload>. |
Typ: | Nie dotyczy |
<JSONPayload>/<Variable> element
(Wymagane w elemencie JSONPayload). Określa zmienną, w której wyodrębniona wartość jest przypisano. W elemencie <Variable> możesz umieścić w nim wiele tagów <Variable>, aby wypełnić element. wiele zmiennych.
<Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable>
Domyślne: | Nie dotyczy |
Obecność: | Wymagane w elemencie JSONPayload. |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
nazwa |
Określa nazwę zmiennej, której będzie dotyczyć wyodrębniona wartość przypisano. |
nazwa |
Wymagane | Ciąg znaków |
typ | Określa typ danych wartości zmiennej. | Nie dotyczy | Opcjonalnie |
Ciąg tekstowy. Do wyboru masz te opcje:
|
<JSONPayload>/<Variable>/<JSONPath> element
(Wymagane w elemencie JSONPayload:variable). Określa ścieżkę JSON używaną do wyodrębnienia z wiadomości w formacie JSON.
<Variable name="name"> <JSONPath>$.rss.channel.title</JSONPath> </Variable>
Domyślne: | Nie dotyczy |
Obecność: | Wymagane |
Typ: | Ciąg znaków |
<XMLPayload> element
(Opcjonalnie, 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
to 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ślne: | Nie dotyczy |
Obecność: | Opcjonalnie: Musisz jednak uwzględnić co najmniej jeden z następujących elementów:
<URIPath> , <QueryParam> , <Header>
<FormParam> , <JSONPayload> lub
<XMLPayload>. |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
stopPayloadProcessing |
Ustaw jako |
fałsz |
Opcjonalnie | Wartość logiczna |
<XMLPayload>/<Namespaces> element
(Opcjonalnie) Określa przestrzeń nazw, która ma być używana podczas oceny XPath. Jeśli używasz przestrzeni nazw w wyrażeniach XPath, musisz tutaj zadeklarować przestrzenie nazw, tak jak pokazano to w z tego przykładu.
<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 uwzględnić w komentarzu
<Namespaces>
, jak widać w tym przykładzie:
<XMLPayload stopPayloadProcessing="false"> <!-- <Namespaces/> --> <Variable name="legName" type="string"> <XPath>/Directions/route/leg/name</XPath> </Variable> </XMLPayload>
Domyślne: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Ciąg znaków |
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
prefix |
Prefiks przestrzeni nazw. |
Nie dotyczy |
Wymagane | Ciąg znaków |
<XMLPayload>/<Variable> element
(Opcjonalnie) Określa zmienną, do której zostanie przypisana wyodrębniona wartość.
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
Domyślne: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
nazwa |
Określa nazwę zmiennej, której będzie dotyczyć wyodrębniona wartość przypisano. |
nazwa |
Wymagane | Ciąg znaków |
typ | Określa typ danych wartości zmiennej. | Wartość logiczna | Opcjonalnie |
Ciąg tekstowy. Do wyboru masz te opcje:
|
<XMLPayload>/<Variable>/<XPath> element
(Wymagane w elemencie XMLPayload:variable). Określa ścieżkę XPath zdefiniowaną dla atrybutu . 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ć
przestrzenie nazw w sekcji <XMLPayload><Namespaces>
zasad.
<Variable name="name" type="boolean"> <XPath>/foo:test/foo:example</XPath> </Variable>
Domyślne: | Nie dotyczy |
Obecność: | Wymagane |
Typ: | Ciąg znaków |
Informacje o błędzie
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
Interfejs API analiz treść wiadomości za pomocą niestandardowych statystyk.