Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Zasada AssignMessage zmienia się lub tworzy nowe wiadomości z żądaniami i odpowiedziami podczas przepływu serwera proxy interfejsu API. Ta zasada umożliwia wykonywanie na tych wiadomościach następujące działania:
- Dodawanie nowych parametrów formularza, nagłówków lub parametrów zapytania do wiadomości
- Kopiowanie istniejących usług z jednej wiadomości do drugiej
- Usuń nagłówki, parametry zapytania, parametry formularza lub wiadomość. ładunki z wiadomości
- Ustaw wartość istniejących właściwości w wiadomości.
Za pomocą zasady AssignMessage zazwyczaj można dodawać, zmieniać lub usuwać właściwości żądania lub odpowiedzi. Możesz też jednak użyć zasady AssignMessage, aby utworzyć niestandardową żądania lub odpowiedzi i przekazać ją do innego miejsca docelowego, tak jak to opisano w Tworzenie niestandardowych wiadomości z prośbami
Zasada AssignMessage może tworzyć i zmieniać zmienne przepływu z następującym elementem podrzędnym elementy:
<AssignMessage>
element
Definiuje zasadę AssignMessage.
Wartość domyślna | Zobacz kartę Zasady domyślne poniżej |
Wymagany? | Wymagane |
Typ | Złożony obiekt |
Element nadrzędny | nie dotyczy |
Elementy podrzędne |
<Add> <AssignTo> <AssignVariable> <Copy> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
Element <AssignMessage>
ma taką składnię:
Składnia
Element <AssignMessage>
ma taką składnię:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <!-- All AssignMessage child elements are optional --> <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>[false|true]</Path> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>[false|true]</ReasonPhrase> <StatusCode>[false|true]</StatusCode> <Verb>[false|true]</Verb> <Version>[false|true]</Version> </Copy> <DisplayName>policy_display_name</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>path</Path> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Domyślna zasada
Poniższy przykład pokazuje ustawienia domyślne po dodaniu zasady AssignMessage. do procesu w interfejsie Edge:
<AssignMessage continueOnError="false" enabled="true" name="assign-message-default"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Copy source="request"> <Headers/> <QueryParams/> <FormParams/> <Payload/> <Verb/> <StatusCode/> <ReasonPhrase/> <Path/> </Copy> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> <Payload/> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <AssignVariable> <Name>name</Name> <Value/> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Gdy wstawisz nową zasadę AssignMessage w interfejsie Edge, szablon będzie zawierał atrapy dla wszystkich
możliwe działania. Zwykle wybierasz operacje, które chcesz wykonywać z użyciem tej zasady
i usuń pozostałe elementy podrzędne. Jeśli na przykład chcesz wykonać operację kopiowania, użyj
<Copy>
i usuń elementy <Add>
, <Remove>
oraz inne elementy podrzędne z elementu
zasady ochrony prywatności.
Ten element ma te atrybuty, które są wspólne dla wszystkich zasad:
Atrybut | Domyślnie | Wymagany? | Description |
---|---|---|---|
name |
Nie dotyczy | Wymagane |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie użyj elementu |
continueOnError |
fałsz | Opcjonalnie | Ustaw wartość „false”, aby wyświetlać błąd, gdy zasada nie działa. To prawidłowy proces w przypadku większości zasad. Ustaw wartość „true”, aby kontynuować wykonywanie przepływu nawet po wystąpieniu błędu. |
enabled |
prawda | Opcjonalnie | Ustaw wartość „true”, aby egzekwować zasadę. Ustaw wartość „false”, aby wyłączyć zasadę. Zasada nie będzie egzekwowana, nawet jeśli pozostanie powiązana z przepływem. |
async |
fałsz | Wycofano | Ten atrybut został wycofany. |
Poniższa tabela zawiera ogólny opis elementów podrzędnych funkcji
<AssignMessage>
:
Element podrzędny | Wymagana? | Opis |
---|---|---|
Typowe operacje | ||
<Add> |
Opcjonalnie | Dodaje informacje do obiektu wiadomości określonego przez klucz
Element <AssignTo> .
|
<Copy> |
Opcjonalnie | Kopiuje informacje z wiadomości określonej przez source
do obiektu wiadomości określonego przez element <AssignTo> . |
<Remove> |
Opcjonalnie | Usuwa określone elementy ze zmiennej wiadomości określonej w metodzie
<AssignTo> . |
<Set> |
Opcjonalnie | Zastępuje wartości istniejących właściwości w żądaniu lub odpowiedzi, które są określone przez
w elemencie <AssignTo> .
|
Inne elementy podrzędne | ||
<AssignTo> |
Opcjonalnie | Określa wiadomość, na której działa zasada AssignMessage. Może to być standardowa wartość, może to być również nowa, niestandardowa wiadomość. |
<AssignVariable> |
Opcjonalnie | Przypisuje wartość do zmiennej przepływu. Jeśli zmienna nie istnieje,
Tworzy ją <AssignVariable> . |
<IgnoreUnresolvedVariables> |
Opcjonalnie | Określa, czy przetwarzanie zatrzymuje się po napotkaniu nierozwiązanej zmiennej. |
Każdy z tych elementów podrzędnych opisujemy w dalszej części tego artykułu.
Przykłady
Poniższe przykłady pokazują niektóre sposoby korzystania z zasady AssignMessage zasady:
1. Dodaj nagłówek
Poniższy przykład dodaje do żądania nagłówek z parametrem
Element <Add>
:
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
2. Usunięcie ładunku
Poniższy przykład pokazuje usunięcie ładunku z odpowiedzi z tagiem <Remove>
element:
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
3. Zmień odpowiedź
Ten przykład zmienia istniejący obiekt odpowiedzi przez dodanie do niego nagłówka:
<AssignMessage name="modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="false" type="response"></AssignTo> </AssignMessage>
Ten przykład nie powoduje utworzenia nowej wiadomości. Zamiast tego do wiadomości z odpowiedzią, dodając nagłówek HTTP.
Ponieważ w tym przykładzie pominięto nazwę zmiennej w elemencie <AssignTo>
i wskazuje on
type
jako „odpowiedź”, ta zasada modyfikuje obiekt odpowiedzi zwrócony przez element docelowy
serwera.
Nagłówek HTTP dodany do odpowiedzi przez tę zasadę pochodzi ze zmiennej wypełniane przez zasadę wyszukiwania pamięci podręcznej. Dlatego komunikat z odpowiedzią zmodyfikowany przez ten Zasada dotycząca przypisania wiadomości zawiera nagłówek HTTP wskazujący, czy wyniki zostały nie są pobierane z pamięci podręcznej. Ustawienie nagłówków w odpowiedzi może być przydatne podczas debugowania w rozwiązywaniu problemów.
4. Ustaw zawartość dynamiczną
Używając funkcji Przypisz wiadomość, możesz umieścić zawartość dynamiczną w ładunku odpowiedzi oraz wiadomości z prośbami.
Aby umieścić zmienne przepływu Edge w ładunku XML, opakuj wyznaczoną zmienną w formacie curly.
nawiasy klamrowe w ten sposób: {prefix.name}
.
Ten przykład zawiera wartość zmiennej przepływu nagłówka HTTP user-agent
w elemencie XML o nazwie User-agent
:
<AssignMessage name="set-dynamic-content"> <AssignTo createNew="false" type="response"></AssignTo> <Set> <Payload contentType="text/xml"> <User-agent>{request.header.user-agent}</User-agent> </Payload> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
W przypadku ładunków JSON możesz wstawić zmienne za pomocą funkcji variablePrefix
i
Atrybuty variableSuffix
ze znakami separatora, jak pokazano poniżej
przykład:
<AssignMessage name="set-payload"> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> { "user-agent": "@request.header.user-agent#" } </Payload> </AssignMessage>
Pełną listę zmiennych przepływu znajdziesz w dokumentacji zmiennych przepływu.
Od wersji Cloud 16.08.17 do wstawiania zmiennych można też używać nawiasów klamrowych.
5. Usuń parametr zapytania
Ten przykład pozwala usunąć z żądania parametr zapytania apikey
:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Sprawdzoną metodą jest usunięcie z żądania parametru zapytania apikey
jest wyświetlany, gdy do uwierzytelniania użytkowników używasz zasadVerifyAPIKey. Robisz to, by zapobiec
lub przekazywania poufnych informacji do celu backendu.
6: Ustaw/pobieraj zmienne
W przykładzie poniżej użyto 3 zasad przypisywania wiadomości:
- Tworzy w żądaniu 3 zmienne przepływu z wartościami statycznymi
- Dynamicznie pobiera zmienne przepływu z drugiej zasady w przepływie żądań
- Ustawia je w ładunku odpowiedzi
<!-- Policy #1: Set variables in the request --> <AssignMessage continueOnError="false" enabled="true" name="set-variables"> <!-- Create a variable named myAppSecret --> <AssignVariable> <Name>myAppSecret</Name> <Value>42</Value> </AssignVariable> <!-- Create a variable named config.environment --> <AssignVariable> <Name>config.environment</Name> <Value>test</Value> </AssignVariable> <!-- Create a variable named config.protocol --> <AssignVariable> <Name>config.protocol</Name> <Value>gopher</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
W pierwszej zasadzie element <AssignVariable>
tworzy i ustawia 3 elementy
zmiennych w żądaniu. Każdy element <Name>
określa
nazwę zmiennej, a <Value>
określa jej wartość.
Druga zasada używa elementu <AssignVariable>
do odczytu wartości i tworzy trzy
nowe zmienne:
<!-- Policy #2: Get variables from the request --> <AssignMessage continueOnError="false" enabled="true" name="get-variables"> <AssignTo createNew="false" transport="http" type="request"/> <!-- Get the value of myAppSecret and create a new variable, secret --> <AssignVariable> <Name>secret</Name> <Ref>myAppSecret</Ref> <Value>0</Value> </AssignVariable> <!-- Get the value of config.environment and create a new variable, environment --> <AssignVariable> <Name>environment</Name> <Ref>config.environment</Ref> <Value>default</Value> </AssignVariable> <!-- Get the value of config.protocol and create a new variable, protocol --> <AssignVariable> <Name>protocol</Name> <Ref>config.protocol</Ref> <Value>default</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
W drugiej zasadzie element <Ref>
odwołuje się do zmiennej źródłowej,
i <Name>
określają nazwy nowych zmiennych. Jeśli zmienna
, do którego odwołuje się element <Ref>
, jest niedostępny, możesz użyć wartości
określona przez element <Value>
.
Aby wypróbować te zasady:
- Dodaj zasady 1 i 2 do przepływu żądań. Zasada nr 1 musi być umieszczona przed zasadą 2.
- Dodaj trzecią zasadę w procesie odpowiedzi.
- Trzecia zasada używa elementu
<Set>
, aby dodać zmienne do odpowiedzi. Ten przykład tworzy ładunek XML w odpowiedzi, którą Edge zwraca klientowi:<!-- Policy #3: Add variables to the response --> <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload"> <DisplayName>put-em-in-the-payload</DisplayName> <Set> <Payload contentType="application/xml"> <wrapper> <secret>{secret}</secret> <config> <environment>{environment}</environment> <protocol>{protocol}</protocol> </config> </wrapper> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Pamiętaj, że składnia, aby uzyskać dostęp do zmiennych przepływu w
<Set>
, polega na ich umieszczaniu nawiasy klamrowe.Pamiętaj, aby ustawić atrybut
contentType
elementu<Payload>
na „application/xml”. - wysłać żądanie do serwera proxy interfejsu API; np.:
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
Opcjonalnie możesz wyświetlać wyniki potokiem za pomocą narzędzia takiego jak
xmllint
, aby kod XML jest wyświetlany w odpowiednio sformatowanej strukturze:curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
Treść odpowiedzi powinna wyglądać tak:
<wrapper> <secret>42</secret> <config> <environment>test</environment> <protocol>gopher</protocol> </config> </wrapper>
7. Uzyskaj nagłówki odpowiedzi objaśnienia usługi
W tym przykładzie załóżmy, że zasada ServiceCallout znajduje się w żądaniu serwera proxy interfejsu API.
a odpowiedź na objaśnienie zawiera wiele nagłówków o tej samej nazwie
(Set-Cookie
). Przy założeniu, że zmienna odpowiedzi wywołania usługi jest domyślną
calloutResponse
, ta zasada uzyskuje drugą wartość (Set-Cookie
)
wartość nagłówka.
<AssignMessage continueOnError="false" enabled="true" name="get-header"> <Set> <Payload contentType="application/json"> {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"} </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Aby wyświetlić wszystkie wartości nagłówka, użyj tej zmiennej:
{calloutResponse.header.Set-Cookie.values}
Każdy element podrzędny w tym dokumencie ma dodatkowe przykłady. Więcej przykładów: Przykład elementu AssignMessage w GitHubie.
Odniesienie do elementu podrzędnego
W tej sekcji opisano elementy podrzędne elementu <AssignMessage>
.
<Add>
Dodaje do żądania lub odpowiedzi informacje, które są określone w parametrze <AssignTo>
.
Element <Add>
dodaje do wiadomości nowe właściwości, których nie ma w pierwotnej wersji
. Aby zmienić wartości istniejących właściwości, użyj właściwości <Set>
.
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Typ złożony |
Element nadrzędny |
<AssignMessage>
|
Elementy podrzędne |
<FormParams> <Headers> <QueryParams> |
Element <Add>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
Przykład 1
W przykładzie poniżej użyto elementu <FormParams>
do pobrania wartości
parametrów ciągu zapytania z początkowego żądania i ustawić je jako parametry formularza
żądanie docelowego punktu końcowego:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
Przykład 2
W tym przykładzie użyto elementu <Headers>
do dodania
Nagłówek User-Agent
do żądania docelowego punktu końcowego:
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Przykład 3
W tym przykładzie użyto elementu <QueryParams>
do dodania pojedynczego zapytania
ma do żądania stałą wartość:
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
W tym przykładzie użyto typu <Add>
we wstępnym przepływie żądania. Gdy spojrzysz na wyniki w narzędziu
na przykład narzędzie Trace, żądanie „http://httpbin.org/get”. zmienia się w
"http://httpbin.org/get?myParam=42".
Elementy podrzędne elementu <Add>
obsługują dynamiczne zastępowanie ciągów znaków,
szablonu wiadomości.
<FormParams>
(element podrzędny tagu <Add>
)
Dodaje nowe parametry formularza do wiadomości z żądaniem. Ten element nie ma wpływu na odpowiedź .
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <FormParam> |
Element nadrzędny |
<Add>
|
Elementy podrzędne |
<FormParam> |
Element <FormParams>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </Add> </AssignMessage>
Przykład 1
W przykładzie poniżej dodano pojedynczy parametr formularza („answer”) i wartość statyczną („42”) do żądanie:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"></AssignTo> </AssignMessage>
Przykład 2
Ten przykład pobiera wartość parametru ciągu zapytania name
i
doda go do żądania jako parametr formularza:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> </AssignMessage>
Pamiętaj, że ten przykład nie określa celu z elementem <AssignTo>
. Ta zasada dodaje atrybuty
tylko do żądania.
Przykład 3
Ten przykład dodaje do żądania wiele parametrów formularza:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
Ten przykład pobiera parametry ciągu zapytania ze źródłowego żądania i je dodaje. jako parametry formularza do żądania wysyłanego do docelowego punktu końcowego.
Aby przyjrzeć się przebiegowi procesu, możesz użyć narzędzia Ślad. Zobaczysz, że treść żądania zawiera zakodowane w adresie URL dane formularza, które zostały pierwotnie przekazane jako ciąg zapytania parametry:
%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en
Z <FormParams>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Czasownik HTTP: POST
- Typ wiadomości: prośba
- Jeden (lub oba) z tych elementów:
- Dane formularza: ustaw jakąś wartość lub „” (pusty ciąg znaków). Na przykład
curl
, dodaj do swojej prośby:-d ""
. - Nagłówek
Content-Length
: ustaw na 0 (jeśli w pierwotne żądanie; w przeciwnym razie – bieżąca długość w bajtach). Na przykładcurl
dodaj użytkownika-H "Content-Length: 0"
do Twojej prośby.
- Dane formularza: ustaw jakąś wartość lub „” (pusty ciąg znaków). Na przykład
Na przykład:
curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded" https://ahamilton-eval-test.apigee.net/am-test
Gdy dodasz element <FormParams>
, Edge ustawi nagłówek Content-Type
żądania na
"application/x-www-form-urlencoded" przed wysłaniem wiadomości do usługi docelowej.
<Headers>
(element podrzędny tagu <Add>
)
Dodaje nowe nagłówki do określonego żądania lub odpowiedzi, które jest określone przez
<AssignTo>
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <Header> |
Element nadrzędny |
<Add>
|
Elementy podrzędne |
<Header> |
Element <Headers>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Add> </AssignMessage>
Przykład 1
W poniższym przykładzie do wiadomości z żądaniem zostanie dodany nagłówek user-agent
oraz
przypisuje wartość zmiennej przepływu request.user.agent
do tego nagłówka.
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(element podrzędny tagu <Add>
)
Dodaje do żądania nowe parametry zapytania. Ten element nie ma wpływu na odpowiedź.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <QueryParam> |
Element nadrzędny |
<Add>
|
Elementy podrzędne |
<QueryParam> |
Element <QueryParams>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
Przykład 1
Poniższy przykład dodaje parametr zapytania „myParam” i przypisuje wartość „42” :
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Z <QueryParams>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Czasownik HTTP: GET
- Typ wiadomości: prośba
Dodatkowo parametry zapytania możesz ustawiać tylko wtedy, gdy w elemencie <AssignTo>
jest
Atrybut type
to wiadomość z żądaniem. Ustawienie ich w odpowiedzi nie ma żadnego efektu.
Jeśli w zasadzie zdefiniujesz pustą tablicę parametrów zapytania
(<Add><QueryParams/></Add>
), zasada nie dodaje żadnego zapytania
. Działa to tak samo jak pominięcie <QueryParams>
.
<AssignTo>
Określa, na którym obiekcie działa zasada AssignMessage. Dostępne są następujące opcje:
- Komunikat żądania:
request
odebrany przez serwer proxy interfejsu API - Komunikat odpowiedzi: element
response
zwrócony z serwera docelowego - Komunikat niestandardowy: niestandardowy obiekt żądania lub odpowiedzi.
W niektórych przypadkach nie możesz zmienić obiektu, na którym działa zasada AssignMessage.
Na przykład nie możesz używać parametrów <Add>
ani <Set>
do dodawania lub zmieniania parametrów zapytania
(<QueryParams>
) lub parametrów formularza (<FormParams>
) w odpowiedzi. Do wyboru masz tylko
manipulowanie parametrami zapytań i formularza w żądaniu.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<AssignMessage>
|
Elementy podrzędne | Brak |
Jeśli nie określisz wartości <AssignTo>
, zasada będzie działać na domyślnym żądaniu lub odpowiedzi
w zależności od miejsca jej wykonania. Jeśli zasada jest wykonywana w przepływie żądania,
wpływa na wiadomość z prośbą. Jeśli jest wykonywane w ramach przepływu odpowiedzi, zasada wpływa na tę odpowiedź
domyślnie.
Element <AssignTo>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </AssignMessage>
Przykład 1
Poniższy przykład wskazuje, że celem jest pierwotne żądanie, które zostanie wysłane do docelowy punkt końcowy:
<AssignMessage name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Ustawiam atrybut createNew
na „false” (domyślnie), ten przykład nie utworzy
nowe żądanie. Wszystkie operacje w tej zasadzie mają wpływ na pierwotne żądanie.
Przykład 2
Ten przykład tworzy nowy obiekt żądania:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Gdy utworzysz nowy obiekt żądania lub odpowiedzi, pozostałe elementy zasady AssignMessage
(takich jak <Add>
, <Set>
i <Set>
) działają na tych nowych
obiektu żądania.
Możesz uzyskać dostęp do nowego obiektu żądania w innych zasadach w dalszej części procesu lub wysłać nowy żądania do usługi zewnętrznej z zasadami ServiceCallout.
Przykład 3
Poniższy przykład pokazuje utworzenie nowego obiektu żądania o nazwie „MyRequestObject”:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> </AssignMessage>
Gdy utworzysz nowy obiekt żądania lub odpowiedzi, pozostałe elementy zasady AssignMessage
(takich jak <Add>
, <Set>
i <Set>
) działają na tych nowych
obiektu żądania.
Możesz uzyskać dostęp do nowego obiektu żądania w innych zasadach w dalszej części procesu lub wysłać nowy żądania do usługi zewnętrznej z zasadami ServiceCallout.
W poniższej tabeli opisano atrybuty <AssignTo>
:
Atrybut | Opis | Wymagana? | Typ |
---|---|---|---|
createNew |
Określa, czy podczas przypisywania wartości ta zasada tworzy nowy komunikat. Jeśli ma wartość „true”, zasada tworzy nową zmienną typu
określone przez W przypadku wartości „false” (fałsz) zasada reaguje na jeden z 2 sposobów:
Jeśli
|
Opcjonalnie | Wartość logiczna |
transport |
Określa typ transportu dla typu wiadomości żądania lub odpowiedzi. Wartość domyślna to „http”. (jedyna obsługiwana wartość). |
Opcjonalnie | Ciąg znaków |
type |
Określa typ nowej wiadomości, jeśli createNew ma wartość „true”. Prawidłowa
wartości to „request” lub „odpowiedź”.
Wartość domyślna to „request”. Jeśli pominiesz ten atrybut, Edge utworzy w zależności od tego, w którym miejscu w przepływie działa ta zasada. |
Opcjonalnie | Ciąg znaków |
<AssignVariable>
Przypisuje wartość do zmiennej przepływu docelowego (np. zmiennej, której wartość jest ustawiana przez klucz
AssignMessage). Jeśli zmienna przepływu nie istnieje, <AssignVariable>
tworzy
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Typ złożony |
Element nadrzędny |
<AssignMessage>
|
Elementy podrzędne |
<Name> (wymagane)<Ref> <Template> <Value> |
Wartość, którą możesz przypisać do zmiennej przepływu docelowego, może być jedną z tych wartości:
- Ciąg literału: użyj elementu podrzędnego
<Value>
, aby określić literał jako ciąg znaków dla zmiennej przepływu docelowego. - Zmienna przepływu: użyj elementu podrzędnego
<Ref>
, by określić wartość istniejącą zmienną przepływu dla zmiennej przepływu docelowego. Pełną listę przepływu , które można wykorzystać jako źródło, znajdziesz w dokumentacji zmiennych przepływu. - Szablon wiadomości: użyj elementu podrzędnego
<Template>
, aby określić szablon wiadomości dla zmienną przepływu docelowego.
Element <AssignVariable>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
Aby określić zmienną źródłową, użyj elementu <Ref>
. Jeśli
zmienna, do której odwołuje się <Ref>
, jest niedostępna, Edge używa wartości
określona przez element <Value>
. Jeśli określisz parametr
<Template>
, ma pierwszeństwo przed innymi elementami podrzędnymi.
Przykład 1
W przykładzie poniżej ustawiana jest wartość nowej zmiennej (myvar
) na literał
wartość „42”:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Przykład 2
W przykładzie poniżej przypisano wartość zmiennej przepływu
request.header.user-agent
do zmiennej przepływu docelowego myvar
i wartość parametru zapytania country
do zmiennej docelowego przepływu
Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
Jeśli któreś z przypisań się nie powiedzie, Edge przypisze wartość „ErrorOnCopy” do zmienną przepływu docelowego.
Jeśli zmienne przepływu myvar
lub Country
nie istnieją,
Tworzy je <AssignVariable>
.
Przykład 3
W przykładzie poniżej użyto funkcji <Template>
elementu podrzędnego łączącego dwie zmienne kontekstowe
z ciągiem literału (łącznikiem) między nimi:
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
Typowym zastosowaniem funkcji <AssignVariable>
jest ustawienie wartości domyślnej parametru zapytania, nagłówka lub
innej wartości, którą można przekazać w żądaniu. Służy do tego kombinacja funkcji
elementów podrzędnych <Ref>
i <Value>
. Więcej
informacje znajdziesz w przykładach dla atrybutu <Ref>
.
<Name>
(element podrzędny tagu <AssignVariable>
)
Określa nazwę zmiennej przepływu docelowego (np. zmiennej, której wartość jest ustawiana przez funkcję
zasady AssignMessage). Jeśli zmienna o nazwie <AssignVariable>
nie istnieje, w polu
tworzy regułę o tej nazwie.
Wartość domyślna | nie dotyczy |
Wymagany? | Wymagane |
Typ | Ciąg znaków |
Element nadrzędny |
<AssignVariable>
|
Elementy podrzędne | Brak |
Element <Name>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> </AssignVariable> </AssignMessage>
Przykład 1
Ten przykład określa zmienną docelową jako myvar
i ustawia ją
do wartości literału „42”:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Jeśli element myvar
nie istnieje, <AssignVariable>
go utworzy.
<Ref>
(element podrzędny tagu <AssignVariable>
)
Określa źródło przypisania jako zmienną przepływu. Zmienna przepływu może być jedną ze zmiennych wstępnie zdefiniowanych zmiennych przepływu (jak wymieniono w dokumentacji zmiennych przepływu) lub niestandardową zmienną przepływu utworzonej przez siebie.
Wartość <Ref>
jest zawsze interpretowana jako zmienna przepływu. nie możesz
określ ciąg literału jako
. Aby przypisać wartość ciągu literału, użyj elementu <Value>
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<AssignVariable>
|
Elementy podrzędne | Brak |
Gdy podasz zmienną przepływu za pomocą funkcji <Ref>
, pomiń znacznik
nawiasy „{}” które normalnie służy do odwoływania się do zmiennej przepływu. Przykład:
aby ustawić wartość nowej zmiennej na wartość przepływu client.host
:
Do this (no brackets): <Ref>client.host</Ref> Do NOT do this (brackets): <Ref>{client.host}</Ref>
Aby zdefiniować domyślną wartość zmiennej przepływu docelowego, użyj funkcji <Value>
w połączeniu z kolumną <Ref>
. Jeśli zmienna przepływu określona przez
<Ref>
nie istnieje, nie może zostać odczytany lub ma wartość null, to Edge przypisuje wartość
<Value>
do zmiennej przepływu docelowego.
Element <Ref>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> </AssignVariable> </AssignMessage>
Przykład 1
W przykładzie poniżej przypisano wartość zmiennej przepływu
request.header.user-agent
do zmiennej przepływu docelowego myvar
i
wartość parametru zapytania country
na zmienną Country
:
<AssignMessage name="assignvariable-4"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> </AssignVariable> </AssignMessage>
W tym przykładzie Edge nie ma wartości domyślnej (ani wartości zastępczej) określonej dla projektu.
Przykład 2
W tym przykładzie przypisano wartość zmiennej przepływu request.header.user-agent
do zmiennej przepływu docelowego myvar
oraz wartości
parametru zapytania country
do zmiennej Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
W tym przykładzie, jeśli wartości zmiennej przepływu request.header.user-agent
lub parametr zapytania Country
ma wartość null, jest nieczytelny lub uszkodzony, Edge przypisuje
wartość „ErrorOnCopy”, do nowych zmiennych.
Przykład 3
Typowy przypadek użycia <AssignVariable>
to ustawienie wartości domyślnej zapytania.
parametr, nagłówek lub inną wartość, którą można przekazać z żądaniem. Na przykład tworzysz
serwer proxy interfejsu Weather API, w którym żądanie przyjmuje pojedynczy parametr zapytania o nazwie „w”. Ten
zawiera identyfikator miasta, dla którego chcesz uzyskać prognozę pogody. Adres URL żądania zawiera
formularz:
http://myCO.com/v1/weather/forecastrss?w=city_ID
Aby zdefiniować wartość domyślną dla argumentu „w”, utwórz zasadę AssignMessage, taką jak :
<AssignMessage continueOnError="false" enabled="true" name="assignvariable-3"> <AssignTo createNew="false" transport="http" type="request"/> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignVariable> <Name>request.queryparam.w</Name> <Ref>request.queryparam.w</Ref> <Value>12797282</Value> </AssignVariable> </AssignMessage>
W tym przykładzie <AssignVariable>
otrzymuje wartość request.queryparam.w
.
i przypisuje ją sobie. Jeśli zmienna przepływu ma wartość null, czyli „w” parametr zapytania był
zostanie pominięty w żądaniu, wówczas w tym przykładzie zostanie użyta wartość domyślna z parametru
<Value>
. Dlatego możesz wysłać żądanie do tego interfejsu API
serwer proxy z pomijaniem litery „w” parametr zapytania:
http://myCO.com/v1/weather/forecastrss
...i nadal serwer proxy interfejsu API zwraca prawidłowy wynik.
W przeciwieństwie do <Value>
, wartość <Ref>
musi być
zmienną przepływu, np. właściwość request
, response
lub
target
. Może to być też utworzona przez Ciebie niestandardowa zmienna przepływu.
Jeśli podasz zmienną przepływu, która nie istnieje dla wartości <Ref>
,
a wartość <IgnoreUnresolvedVariables>
to „true”, Edge zgłasza błąd.
<Template>
(element podrzędny tagu <AssignVariable>
)
Określa szablon wiadomości. Wiadomość umożliwia zastępowanie ciągów zmiennych przy wykonywaniu zasady oraz może łączyć ciągi literał z nazwami zmiennych zapakowanymi w zakrętkę nawiasy klamrowe. Dodatkowo szablony wiadomości pomoc techniczna funkcji, takich jak zmiany znaczenia i konwertowanie wielkości liter.
Użyj atrybutu ref
, aby określić zmienną przepływu, w której wartość zmiennej
to szablon wiadomości. Możesz na przykład zapisać szablon wiadomości jako
atrybut niestandardowy
w aplikacji dewelopera. Gdy Edge wykryje aplikację dewelopera po zweryfikowaniu klucza interfejsu API.
lub tokenu zabezpieczeń (za pomocą dodatkowych zasad), <AssignVariable>
może używać szablonu wiadomości z atrybutu niestandardowego aplikacji, który jest dostępny
jako zmienną przepływu z zasady zabezpieczeń. W przykładzie poniżej założono, że wiadomość
szablon jest dostępny w atrybucie klienta o nazwie message_template
w
aplikacja deweloperska wywołująca interfejs API, przy czym do weryfikacji użyto zasady VerifyAPIKey
klucz interfejsu API aplikacji:
<AssignVariable ref='verifyapikey.myVerifyAPIKeyPolicy.app.name.message_template'/>
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<AssignVariable>
|
Elementy podrzędne | Brak |
Element <Template>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Template>message_template</Template> or <Template ref='template_variable'></Template> </AssignVariable> </AssignMessage>
Przykład 1
Poniższy przykład używa składni szablonów wiadomości do połączenia 2 zmiennych kontekstowych z ciągiem literału (łącznikiem) między nimi:
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
Przykład 2
Poniższy przykład określa zmienną przepływu, w której wartość zmiennej to wstępnie zdefiniowany szablon wiadomości. Użyj tej opcji, jeśli chcesz wstrzyknąć wstępnie zdefiniowany szablon w środowiska wykonawczego bez konieczności modyfikowania zasad:
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_template_variable'/> </AssignVariable> </AssignMessage>
Przykład 3
Następujący przykład określa zmienną przepływu i wartość tekstową. W tym przypadku, jeśli
podana zmienna nie ma wartości null, ta wartość jest używana jako szablon. Jeśli w odniesieniu do
wartość to null, a następnie wartość tekstowa (w tym przypadku {system.uuid}-{messageid}
);
. Ten wzorzec przydaje się do zastąpienia wartość, gdzie
może się zdarzyć, że zechcesz zastąpić domyślny szablon (część tekstową) wartościami
ustawiane dynamicznie. Na przykład instrukcja warunkowa może przechwycić wartość
z mapowania par klucz-wartość i ustaw podaną zmienną na tę wartość:
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_variable'>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
<Value>
(element podrzędny tagu <AssignVariable>
)
Definiuje wartość zmiennej przepływu docelowego ustawionej za pomocą <AssignVariable>
.
wartość jest zawsze interpretowana jako literał; nie można użyć zmiennej przepływu jako wartości, nawet
jeśli umieścisz ją w nawiasach kwadratowych („{}”). Aby używać zmiennej przepływu, użyj funkcji <Ref>
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<AssignVariable>
|
Elementy podrzędne | Brak |
W połączeniu z elementem <Ref>
<Value>
działa jako wartość domyślna (lub zastępcza). Jeśli nie określono <Ref>
, to
nie można pobrać lub ma wartość null, używana jest wartość <Value>
.
Element <Value>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
Przykład 1
Poniższy przykład ustawia wartość zmiennej docelowego przepływu danych, myvar
,
do wartości literału „42”:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Przykład 2
W przykładzie poniżej przypisano wartość zmiennej przepływu
request.header.user-agent
do zmiennej przepływu myvar
i wartości
parametru zapytania country
do zmiennej Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
Jeśli któreś z przypisań się nie powiedzie, <AssignVariable>
przypisze wartość „ErrorOnCopy” do
zmienną przepływu docelowego.
<Copy>
Kopiuje wartości z wiadomości określonej w atrybucie source
do wiadomości określonej przez element <AssignTo>
. Jeśli nie określisz
dla celu z funkcją <AssignTo>
, ta zasada kopiuje wartości do żądania lub odpowiedzi,
w zależności od tego, w którym miejscu w przepływie jest wykonywana ta zasada.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<AssignMessage>
|
Elementy podrzędne |
<FormParams> <Headers> <Path> <Payload> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
Element <Copy>
ma taką składnię:
Składnia
<AssignMessage
continueOnError="[false|true]"
enabled="[true|false]"
name="policy_name" >
<Copy source="[request|response]">
<!-- Can also be an empty array (<FormParams/>) -->
<FormParams>
<FormParam name="formparam_name">formparam_value</FormParam>
...
</FormParams>
<!-- Can also be an empty array (<Headers/>) -->
<Headers>
<Header name="header_name">header_value</Header>
...
</Headers>
<Path>[false|true]</Path>
<Payload>[false|true]</Payload>
<!-- Can also be an empty array (<QueryParams/>) -->
<QueryParams>
<QueryParam name="queryparam_name">queryparam_value</QueryParam>
...
</QueryParams>
<ReasonPhrase>[false|true]</ReasonPhrase>
<StatusCode>[false|true]</StatusCode>
<Verb>[false|true]</Verb>
<Version>[false|true]</Version>
</Copy>
<!-- Used as the destination for the <Copy>
values -->
<AssignTo createNew="[true|false]" transport="http"
type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>
Przykład 1
W poniższym przykładzie skopiujemy nagłówek, 3 parametry formularza, ścieżkę i całe zapytanie parametry z żądania do nowego, niestandardowego żądania:
<AssignMessage continueOnError="false" enabled="true" name="copy-1"> <Copy source="request"> <Headers> <Header name="Header_Name_1">Header value 1</Header> </Headers> <FormParams> <FormParam name="Form_Param_Name_1">Form param value 1</FormParam> <FormParam name="Form_Param_Name_2">Form param value 1</FormParam> <FormParam name="Form_Param_Name_3">Form param value 1</FormParam> </FormParams> <Payload>false</Payload> <Path>true</Path> <QueryParams/> <ReasonPhrase>false</ReasonPhrase> <StatusCode>false</StatusCode> <Verb>false</Verb> <Version>false</Version> </Copy> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Element <Copy>
ma te atrybuty:
Atrybut | Opis | Wymagana? | Typ |
---|---|---|---|
źródło |
Określa obiekt źródłowy kopii.
|
Opcjonalnie | Ciąg znaków |
<FormParams>
(element podrzędny tagu <Copy>
)
Kopiuje parametry formularza z żądania określonego przez
Atrybut source
elementu <Copy>
do żądania
określona przez element <AssignTo>
. Ten element nie ma wpływu na
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <FormParam> lub pusta tablica |
Element nadrzędny |
<Copy>
|
Elementy podrzędne |
<FormParam> |
Element <FormParams>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Copy> </AssignMessage>
Przykład 1
Poniższy przykład pokazuje skopiowanie pojedynczego parametru formularza z żądania do request custom request "MyCustomRequest":
<AssignMessage name="copy-formparams-1"> <Copy source="request"> <FormParams> <FormParam name="paramName">Form param value 1</FormParam> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Przykład 2
Przykład poniżej skopiuje wszystkie parametry formularza do żądania niestandardowego "MyCustomRequest":
<AssignMessage name="copy-formparams-2"> <Copy source="request"> <FormParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Przykład 3
Poniższy przykład skopiuje do żądania niestandardowego 3 parametry formularza "MyCustomRequest":
<AssignMessage name="copy-formparams-3"> <Copy source="request"> <FormParams> <FormParam name="paramName1"/> <FormParam name="paramName2"/> <FormParam name="paramName3"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Przykład 4
Jeśli wiele parametrów formularza ma taką samą nazwę, użyj tej składni:
<AssignMessage name="copy-formparams-4"> <Copy source="request"> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
W tym przykładzie skopiujemy wartości „f1”, „f2” i drugą wartość „f3”. Jeśli „f3” ma tylko jedną , nie zostanie ona skopiowana.
Z <FormParams>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Czasownik HTTP: POST
- Typ wiadomości: odpowiedź
- Jeden (lub oba) z tych elementów:
- Dane formularza: ustaw jakąś wartość lub „” (pusty ciąg znaków). Na przykład
curl
, dodaj do swojej prośby:-d ""
. - Nagłówek
Content-Length
: ustaw na 0 (jeśli w pierwotne żądanie; w przeciwnym razie bieżąca długość. Na przykładcurl
dodaj użytkownika-H "Content-Length: 0"
do Twojej prośby.
- Dane formularza: ustaw jakąś wartość lub „” (pusty ciąg znaków). Na przykład
Gdy kopiujesz <FormParams>
, <Copy>
ustawia Content-Type
wiadomości na
"application/x-www-form-urlencoded" przed wysłaniem wiadomości do usługi docelowej.
<Headers>
(element podrzędny tagu <Copy>
)
Kopiuje nagłówki HTTP z żądania lub odpowiedzi określonej przez
atrybut source
elementu <Copy>
do żądania
lub komunikat z odpowiedzią określony w elemencie <AssignTo>
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <Header> lub pusta tablica |
Element nadrzędny |
<Copy>
|
Elementy podrzędne |
<Header> |
Element <Headers>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Copy> </AssignMessage>
Przykład 1
W poniższym przykładzie skopiujemy nagłówek user-agent
z żądania do
nowy, niestandardowy obiekt żądania:
<AssignMessage name="copy-headers-1"> <Copy source="request"> <Headers> <Header name="user-agent"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Przykład 2
Aby skopiować wszystkie nagłówki, użyj pustego elementu <Headers>
, jak w przykładzie poniżej
programy:
<AssignMessage name="copy-headers-2"> <Copy source="request"> <Headers/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Przykład 3
W przypadku wielu nagłówków o tej samej nazwie użyj tej składni:
<AssignMessage name="copy-headers-3"> <Copy source="request"> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
W tym przykładzie skopiujemy wartości „h1”, „h2” i drugą wartość „h3”. Jeśli „h3” ma tylko jedną , nie zostanie ona skopiowana.
<Path>
(element podrzędny tagu <Copy>
)
Określa, czy ścieżka ma zostać skopiowana z żądania źródłowego do miejsca docelowego użytkownika. Ten element nie ma wpływu na odpowiedź.
Jeśli zasada ma wartość „true”, ta zasada kopiuje ścieżkę z komunikatu żądania określonego w parametrze
atrybut source
elementu <Copy>
do żądania
komunikat określony w elemencie <AssignTo>
.
Wartość domyślna | Fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<Copy>
|
Elementy podrzędne | Brak |
Element <Path>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Path>[false|true]</Path> </Copy> </AssignMessage>
Przykład 1
W poniższym przykładzie widać, że zasada AssignMessage powinna kopiować ścieżkę ze źródła do nowego, niestandardowego obiektu żądania:
<AssignMessage name="copy-path-1"> <Copy source="request"> <Path>true</Path> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Z <Path>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: prośba
<Payload>
(element podrzędny tagu <Copy>
)
Określa, czy ładunek ma zostać skopiowany ze źródła do miejsca docelowego. Źródłami i miejscami docelowymi mogą być żądania lub odpowiedzi.
Jeśli ma wartość „true”, ta zasada kopiuje ładunek z wiadomości określonej przez
atrybut source
elementu <Copy>
do wiadomości
określona przez element <AssignTo>
.
Wartość domyślna | Fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<Copy>
|
Elementy podrzędne | Brak |
Element <Payload>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Payload>[false|true]</Payload> </Copy> </AssignMessage>
Przykład 1
W tym przykładzie <Payload>
ma wartość „true” (prawda) tak aby ładunek żądania
skopiowano z żądania do odpowiedzi:
<AssignMessage name="copy-payload-1"> <Copy source="request"> <Payload>true</Payload> </Copy> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<QueryParams>
(element podrzędny tagu <Copy>
)
Kopiuje parametry ciągu zapytania z żądania określonego przez
atrybut source
elementu <Copy>
do określonego żądania
przez element <AssignTo>
. Ten element nie ma wpływu na odpowiedź.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <QueryParam> lub pusta tablica |
Element nadrzędny |
<QueryParam>
|
Elementy podrzędne | Brak |
Element <QueryParams>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Copy> </AssignMessage>
Przykład 1
Poniższy przykład kopiuje parametr „my_param” z żądania do nowego, niestandardowy obiekt żądania:
<AssignMessage name="copy-queryparams-1"> <Copy source="request"> <QueryParams> <QueryParam name="my_param"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Przykład 2
Następujący przykład powoduje skopiowanie wszystkich parametrów zapytania z żądania do nowego niestandardowego obiekt żądania:
<AssignMessage name="copy-queryparams-2"> <Copy source="request"> <QueryParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Przykład 3
Jeśli wiele parametrów zapytania ma taką samą nazwę, użyj tej składni:
<AssignMessage name="copy-queryparams-3"> <Copy source="request"> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
W tym przykładzie skopiujemy wartości „qp1”, „qp2” i drugą wartość „qp3”. Jeśli „qp3” ma tylko nie jest kopiowana.
Z <QueryParams>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Czasownik HTTP: GET
- Typ wiadomości: prośba
<ReasonPhrase>
(element podrzędny tagu <Copy>
)
Określa, czy wyrażenie przyczyny powinno zostać skopiowane z odpowiedzi źródłowej do odpowiedź miejsca docelowego. Ten element nie ma wpływu na żądanie.
Jeśli ma wartość „true”, ta zasada kopiuje element ReasonPhrase
z odpowiedzi
określona przez atrybut source
elementu <Copy>
do odpowiedzi
określona przez element <AssignTo>
.
Wartość domyślna | Fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<Copy>
|
Elementy podrzędne | Brak |
Element <ReasonPhrase>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <ReasonPhrase>[false|true]</ReasonPhrase> </Copy> </AssignMessage>
Przykład 1
Poniższy przykład ustawia <ReasonPhrase>
na „true”, co powoduje, że <Copy>
aby skopiować wyrażenie przyczyny z odpowiedzi domyślnej do obiektu odpowiedzi niestandardowej:
<AssignMessage name="copy-reasonphrase-1"> <Copy source="response"> <ReasonPhrase>true</ReasonPhrase> </Copy> <AssignTo createNew="trie" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
Z <ReasonPhrase>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: odpowiedź
<StatusCode>
(element podrzędny tagu <Copy>
)
Określa, czy kod stanu jest kopiowany z odpowiedzi źródłowej do miejsca docelowego . Ten element nie ma wpływu na żądanie.
Jeśli ma wartość „true” (prawda), ta zasada kopiuje kod stanu z komunikatu odpowiedzi określonego w parametrze
atrybutu source
elementu <Copy>
do odpowiedzi
komunikat określony w elemencie <AssignTo>
.
Wartość domyślna | Fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<Copy>
|
Elementy podrzędne | Brak |
Element <StatusCode>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <StatusCode>[false|true]</StatusCode> </Copy> </AssignMessage>
Przykład 1
W poniższym przykładzie ustawienie <StatusCode>
ma wartość „true”, co powoduje skopiowanie kodu stanu
z domyślnego obiektu odpowiedzi do nowego, niestandardowego obiektu odpowiedzi:
<AssignMessage name="copy-statuscode-1"> <Copy source="response"> <StatusCode>true</StatusCode> </Copy> <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
Z <StatusCode>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: odpowiedź
Typowym zastosowaniem atrybutu <StatusCode>
jest zapewnienie tego samego stanu odpowiedzi serwera proxy
jako odpowiedź otrzymaną od celu, gdy createNew
użytkownika <AssignTo>
ma wartość „true” (prawda).
<Verb>
(element podrzędny tagu <Copy>
)
Określa, czy czasownik HTTP jest kopiowany z żądania źródłowego do miejsca docelowego użytkownika. Ten element nie ma wpływu na odpowiedź.
Jeśli wartość to „true”, kopiuje czasownik znaleziony w atrybucie source
elementu <Copy>
w odpowiedzi na żądanie określone w elemencie <AssignTo>
.
Wartość domyślna | Fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<Copy>
|
Elementy podrzędne | Brak |
Element <Verb>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Verb>[false|true]</Verb> </Copy> </AssignMessage>
Przykład 1
W poniższym przykładzie <Verb>
ma wartość „true”, co powoduje skopiowanie czasownika z funkcji
ustaw domyślne żądanie na nowe, niestandardowe żądanie:
<AssignMessage name="copy-verb-1"> <Copy source="request"> <Verb>true</Verb> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Z <Verb>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: prośba
<Version>
(element podrzędny tagu <Copy>
)
Określa, czy wersja HTTP jest kopiowana z żądania źródłowego do żądania miejsca docelowego. Ten element nie ma wpływu na odpowiedź.
Jeśli wartość to „true”, skopiuje wersję HTTP z atrybutu source
elementu <Copy>
.
do obiektu określonego przez element <AssignTo>
.
Wartość domyślna | Fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<Copy>
|
Elementy podrzędne | Brak |
Element <Version>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Version>[false|true]</Version> </Copy> </AssignMessage>
Przykład 1
W tym przykładzie <Version>
ma wartość „true” (prawda) który następnie
z domyślnego obiektu żądania do nowego, niestandardowego obiektu żądania:
<AssignMessage name="copy-version-1"> <Copy source="request"> <Version>true</Version> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Z <Version>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: prośba
<DisplayName>
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor serwera proxy w interfejsie zarządzania o innej, bardziej naturalnie brzmiącej nazwie.
Element <DisplayName>
jest wspólny dla wszystkich zasad.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie: Jeśli pominiesz <DisplayName> , wartość pary klucz-wartość
jest używany atrybut name zasady |
Typ | Ciąg znaków |
Element nadrzędny | <PolicyElement> |
Elementy podrzędne | Brak |
Element <DisplayName>
ma taką składnię:
Składnia
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
Przykład
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
Element <DisplayName>
nie ma atrybutów ani elementów podrzędnych.
<IgnoreUnresolvedVariables>
Określa, czy przetwarzanie zatrzymuje się po napotkaniu nierozwiązanej zmiennej.
Wartość domyślna | Fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<AssignMessage>
|
Elementy podrzędne | Brak |
Ustaw jako true
, aby ignorować nierozstrzygnięte zmienne i kontynuować przetwarzanie; w przeciwnym razie
false
Wartością domyślną jest false
.
Ustawienie <IgnoreUnresolvedVariables>
na true
różni się od ustawienia
Wartość parametru continueOnError
<AssignMessage>
do true
, ponieważ dotyczy tylko
ustawiania i pobierania wartości zmiennych. Jeśli ustawisz continueOnError
na
true
, a następnie Edge ignoruje wszystkie błędy, nie tylko błędy napotkane podczas używania funkcji
zmiennych.
Element <IgnoreUnresolvedVariables>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </AssignMessage>
Przykład 1
W tym przykładzie <IgnoreUnresolvedVariables>
ma wartość „true”:
<AssignMessage name="ignoreunresolvedvariables"> <Copy source="response"> ... <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </Copy> </AssignMessage>
<Remove>
Usuwa nagłówki, parametry zapytania, parametry formularza lub ładunek wiadomości z
wiadomość. Może to być prośba lub odpowiedź. Ty określasz, który komunikat <Remove>
działa za pomocą elementu <AssignTo>
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Typ złożony |
Element nadrzędny |
<AssignMessage>
|
Elementy podrzędne |
<FormParams> <Headers> <Payload> <QueryParams> |
Typowy przypadek użycia <Remove>
to usunięcie parametru zapytania zawierającego poufne dane
z obiektu żądania przychodzącego, aby uniknąć przekazywania ich do serwera backendu.
Element <Remove>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
Przykład 1
Ten przykład pozwala usunąć treść wiadomości z odpowiedzi:
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
W przepływie odpowiedzi ta zasada usuwa treść odpowiedzi, zwracając tylko kod HTTP klientowi.
Przykład 2
Poniższy przykład pozwala usunąć wszystkie parametry formularza i parametr zapytania z przychodzących żądanie:
<AssignMessage continueOnError="false" enabled="true" name="remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<FormParams>
(element podrzędny tagu <Remove>
)
Usuwa z żądania określone parametry formularza. Ten element nie ma wpływu na .
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <FormParam> lub pusta tablica |
Element nadrzędny |
<Remove>
|
Elementy podrzędne |
<FormParam> |
Element <FormParams>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Remove> </AssignMessage>
Przykład 1
Ten przykład pozwala usunąć z żądania 3 parametry formularza:
<AssignMessage name="remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Przykład 2
Ten przykład powoduje usunięcie z żądania wszystkich parametrów formularza:
<AssignMessage name="remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Przykład 3
Jeśli wiele parametrów formularza ma taką samą nazwę, użyj tej składni:
<AssignMessage name="remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
W tym przykładzie usunięto wartości „f1”, „f2” i drugą wartość „f3”. Jeśli „f3” ma tylko jedną , nie jest ona usuwana.
Z <FormParams>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: prośba
Content-Type
: "application/x-www-form-urlencoded"
<Headers>
(element podrzędny tagu <Remove>
)
Usuwa określone nagłówki HTTP z żądania lub odpowiedzi, które są określone przez
<AssignTo>
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <Header> lub pusta tablica |
Element nadrzędny |
<Remove>
|
Elementy podrzędne |
<Header> |
Element <Headers>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Remove> </AssignMessage>
Przykład 1
Ten przykład pozwala usunąć z żądania nagłówek user-agent
:
<AssignMessage name="remove-headers-1"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Przykład 2
Ten przykład pozwala usunąć wszystkie nagłówki z żądania:
<AssignMessage name="remove-headers-2"> <Remove> <Headers/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Przykład 3
W przypadku wielu nagłówków o tej samej nazwie użyj tej składni:
<AssignMessage name="remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
W tym przykładzie usunięto wartości „h1”, „h2” i drugą wartość „h3” od wniosku. Jeśli „h3” ma tylko jedną wartość, nie jest usuwana.
<Payload>
(element podrzędny tagu <Remove>
)
Określa, czy <Remove>
usuwa ładunek w żądaniu lub odpowiedzi, który jest
określona przez element <AssignTo>
. Ustaw jako „true” (prawda) do
wyczyścić ładunek, w przeciwnym razie ma wartość „false” (fałsz). Wartość domyślna to „false”.
Wartość domyślna | Fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<Remove>
|
Elementy podrzędne | Brak |
Element <Payload>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <Payload>[false|true]</Payload> </Remove> </AssignMessage>
Przykład 1
W tym przykładzie <Payload>
ma wartość „true” (prawda) tak aby ładunek żądania
wyczyszczono:
<AssignMessage name="remove-payload-1"> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(element podrzędny tagu <Remove>
)
Usuwa z żądania określone parametry zapytania. Ten element nie ma wpływu na .
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <QueryParam> lub pusta tablica |
Element nadrzędny |
<Remove>
|
Elementy podrzędne |
<QueryParam> |
Element <QueryParams>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
Przykład 1
Ten przykład pozwala usunąć z żądania pojedynczy parametr zapytania:
<AssignMessage name="remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Przykład 2
Ten przykład pozwala usunąć z żądania wszystkie parametry zapytania:
<AssignMessage name="remove-queryparams-2"> <Remove> <QueryParams/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Przykład 3
Jeśli wiele parametrów zapytania ma taką samą nazwę, użyj tej składni:
<AssignMessage name="remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
W tym przykładzie usunięto wartości „qp1”, „qp2” i drugą wartość „qp3” od wniosku. Jeśli „qp3” ma tylko jedną wartość, nie jest usuwana.
Przykład 4
Ten przykład pozwala usunąć z żądania parametr zapytania apikey
:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Z <QueryParams>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Czasownik HTTP: GET
- Typ wiadomości: prośba
<Set>
Ustawia informacje w komunikacie żądania lub odpowiedzi, które są określone przez
<AssignTo>
. <Set>
zastępuje nagłówki lub
parametry, które już istnieją w oryginalnej wiadomości. Aby utworzyć nowy nagłówek lub parametr, użyj
element <Add>
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Typ złożony |
Element nadrzędny |
<AssignMessage>
|
Elementy podrzędne |
<FormParams> <Headers> <Payload> <Path> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
Element <Set>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>path</Path> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Przykład 1
Ten przykład pokazuje element <Set>
:
<AssignMessage continueOnError="false" enabled="true" name="set-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> <QueryParams> <QueryParam name="name">{request.header.name}</QueryParam> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> <!-- <Verb>GET</Verb> --> <Payload contentType="text/plain">42</Payload> <Path/> <ReasonPhrase>Bad request</ReasonPhrase> <StatusCode>400</StatusCode> <Verb>POST</Verb> <Verb>{my_variable}</Verb> <Version>1.1</Version> </Set> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
<FormParams>
(element podrzędny tagu <Set>
)
Zastępuje istniejące parametry formularza w żądaniu i zastępuje je nowymi wartościami które można określić za pomocą tego elementu. Ten element nie ma wpływu na odpowiedź.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <FormParam> |
Element nadrzędny |
<Set>
|
Elementy podrzędne |
<FormParam> |
Element <FormParams>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Set> </AssignMessage>
Przykład 1
Poniższy przykład pokazuje parametr formularza o nazwie „myparam” do wartości
Zmienna request.header.myparam
w nowym żądaniu niestandardowym:
<AssignMessage name="set-formparams-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> </Set> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Z <FormParams>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Czasownik HTTP: POST
- Typ wiadomości: prośba
Jeśli zdefiniujesz w zasadach puste parametry formularza
(<Add><FormParams/></Add>
), zasada nie dodaje żadnego formularza
. Działa to tak samo jak pominięcie <FormParams>
.
<Set>
zmienia element Content-Type
wiadomości na
"application/x-www-form-urlencoded" przed wysłaniem jej do docelowego punktu końcowego.
<Headers>
(element podrzędny tagu <Set>
)
Zastępuje istniejące nagłówki HTTP w żądaniu lub odpowiedzi, które są określone przez
<AssignTo>
.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <Header> |
Element nadrzędny |
<Set>
|
Elementy podrzędne |
<Header> |
Element <Headers>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Set> </AssignMessage>
Przykład 1
Ten przykład ustawia nagłówek user-agent
na wartość parametru
Zmienna request.header.user-agent
:
<AssignMessage name="set-headers-1"> <Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Jeśli w zasadach zdefiniujesz puste nagłówki
(<Add><Headers/></Add>
), zasada nie dodaje żadnych nagłówków. Ten
jest równoważne z pominięciem <Headers>
.
<Path>
(element podrzędny tagu <Set>
)
<Payload>
(element podrzędny tagu <Set>
)
Definiuje treść żądania lub odpowiedzi, która jest wskazywana przez tag
<AssignTo>
. Może być to dowolny prawidłowy typ treści, np.
tekstowych, JSON lub XML.
Wartość domyślna | pusty ciąg |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<Set>
|
Elementy podrzędne | Brak |
Element <Payload>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> </Set> </AssignMessage>
Przykład 1
Ten przykład ustawia ładunek w postaci zwykłego tekstu:
<AssignMessage name="set-payload-1"> <Set> <Payload contentType="text/plain">42</Payload> </Set> </AssignMessage>
Przykład 2
Ten przykład ustawia ładunek JSON:
<AssignMessage name="set-payload-2"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set> </AssignMessage>
Przykład 3
Poniższy przykład wstawia wartości zmiennych do ładunku przez opakowanie nazw zmiennych w nawiasach klamrowych:
<AssignMessage name="set-payload-3"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set> </AssignMessage>
W starszych wersjach Apigee Edge – na przykład przed wersją Cloud 16.08.17 – możesz
Nie używaj nawiasów klamrowych do oznaczenia odwołań do zmiennych w ładunkach JSON. W tych wydaniach
jest wymagane do użycia atrybutów variablePrefix
i variableSuffix
do
określić znaki separatora i używać ich do zawijania nazw zmiennych w następujący sposób:
<AssignMessage name="set-payload-3b"> <Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set> </AssignMessage>
Ta starsza składnia nadal działa.
Przykład 4
Zawartość pliku <Payload>
jest traktowana jako szablon wiadomości. Oznacza to, że
Zasada AssignMessage zastępuje zmienne w nawiasach klamrowych wartością atrybutu
w przypadku odwołanych zmiennych w czasie działania.
W poniższym przykładzie użyto składni nawiasów klamrowych do ustawienia części ładunku na wartość zmiennej:
<AssignMessage name="set-payload-4"> <Set> <Payload contentType="text/xml"> <root> <e1>sunday</e1> <e2>funday</e2> <e3>{var1}</e3> </root> </Payload> </Set> </AssignMessage>
W poniższej tabeli opisano atrybuty <Payload>
:
Atrybut | Opis | Obecność | Typ |
---|---|---|---|
contentType |
Jeśli zostanie określony, wartość |
Opcjonalnie | Ciąg znaków |
variablePrefix |
Opcjonalnie określa początkowy separator zmiennej przepływu. Wartość domyślna to „{”. Dla: więcej informacji znajdziesz w dokumentacji zmiennych przepływu. | Opcjonalnie | Znak |
variableSuffix |
Opcjonalnie określa separator końcowy w zmiennej przepływu. Domyślna wartość to „"}”. Dla: więcej informacji znajdziesz w dokumentacji zmiennych przepływu. | Opcjonalnie | Znak |
<QueryParams>
(element podrzędny tagu <Set>
)
Zastępuje istniejące parametry zapytania w żądaniu nowymi wartościami. Ten element nie ma żadnego efektu na odpowiedź.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Tablica elementów <QueryParam> |
Element nadrzędny |
<Set>
|
Elementy podrzędne |
<QueryParam> |
Element <QueryParams>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Set> </AssignMessage>
Przykład 1
Poniższy przykład pokazuje wartość „adresu” na wartość pary klucz-wartość
Zmienna request.header.address
:
<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </AssignMessage>
Z <QueryParams>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Czasownik HTTP: GET
- Typ wiadomości: prośba
Jeśli zdefiniujesz w zasadach puste parametry zapytania
(<Set><QueryParams/></Set>
), zasada nie ustawia żadnego zapytania
. Działa to tak samo jak pominięcie <QueryParams>
.
<ReasonPhrase>
(element podrzędny tagu <Set>
)
Ustawia wyrażenie określające powód w odpowiedzi. Zwykle robi się to podczas debugowania w połączeniu z parametrami
<StatusCode>
Ten element nie ma wpływu na żądanie.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<Set>
|
Elementy podrzędne | Brak |
Element <ReasonPhrase>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> </Set> </AssignMessage>
Przykład 1
Poniższy przykład zdefiniował proste wyrażenie przyczyny:
<AssignMessage name="set-reasonphrase-1"> <Set> <ReasonPhrase>Bad medicine</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Przykład 2
Zawartość pliku <ReasonPhrase>
jest traktowana jako szablon wiadomości. Oznacza to, że
nazwa zmiennej w nawiasach klamrowych jest zastępowana w czasie działania wartością funkcji
jak w następującym przykładzie:
<AssignMessage name="set-reasonphrase-2"> <Set> <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Z <ReasonPhrase>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: odpowiedź
<StatusCode>
(element podrzędny tagu <Set>
)
Ustawia kod stanu odpowiedzi. Ten element nie ma wpływu na żądanie.
Wartość domyślna | „200” (gdy atrybut createNew atrybutu <AssignTo>
ma wartość „true” (prawda)). |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków lub variable |
Element nadrzędny |
<Set>
|
Elementy podrzędne | Brak |
Element <StatusCode>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <StatusCode>HTTP_status_code or {variable}</StatusCode> </Set> </AssignMessage>
Przykład 1
Ten przykład ustawia prosty kod stanu:
<AssignMessage name="set-statuscode-1"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Przykład 2
Zawartość pliku <StatusCode>
jest traktowana jako szablon wiadomości. Oznacza to, że
nazwa zmiennej w nawiasach klamrowych zostanie w czasie działania zastąpiona wartością
jak w następującym przykładzie:
<AssignMessage name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Z <StatusCode>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: odpowiedź
<Verb>
(element podrzędny tagu <Set>
)
Ustawia czasownik HTTP w żądaniu. Ten element nie ma wpływu na odpowiedź.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków lub variable |
Element nadrzędny |
<Set>
|
Elementy podrzędne | Brak |
Element <Verb>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </AssignMessage>
Przykład 1
Ten przykład ustawia prosty czasownik w żądaniu:
<AssignMessage name="set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Przykład 2
Zawartość pliku <Verb>
jest traktowana jako szablon wiadomości. Oznacza to, że zmienna
ujęte w nawiasy klamrowe zostaną zastąpione w czasie działania wartością odwołania
.
Ten przykład używa zmiennej do wypełniania czasownika:
<AssignMessage name="set-verb-2"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Z <Verb>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: prośba
<Version>
(element podrzędny tagu <Set>
)
Określa wersję HTTP dla żądania. Ten element nie ma wpływu na odpowiedź.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków lub variable |
Element nadrzędny |
<Set>
|
Elementy podrzędne | Brak |
Element <Version>
ma taką składnię:
Składnia
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Przykład 1
W tym przykładzie ustawiany jest numer wersji na „1.1”:
<AssignMessage name="set-version-1"> <Set> <Version>1.1</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Przykład 2
W tym przykładzie numer wersji ustawia się za pomocą zmiennej w nawiasach klamrowych:
<AssignMessage name="set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Zawartość pliku <Version>
jest traktowana jako szablon wiadomości. Oznacza to, że
nazwa zmiennej w nawiasach klamrowych zostanie zastąpiona w czasie działania wartością zmiennej
.
Z <Version>
możesz korzystać tylko wtedy, gdy są spełnione te kryteria:
- Typ wiadomości: prośba
Tworzenie niestandardowych wiadomości z prośbami
Możesz użyć zasady AssignMessage, aby utworzyć niestandardową wiadomość z prośbą. Po utworzeniu niestandardowego możesz użyć go na kilka sposobów:
- Dostęp do zmiennych w innych zasadach
- Przekazywanie go do usługi zewnętrznej
Aby utworzyć niestandardową wiadomość z prośbą, użyj elementu <AssignTo>
w zasadach AssignMessage
. Ustaw createNew
na „prawda” i podaj w treści nazwę nowej wiadomości.
zgodnie z poniższym przykładem:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Domyślnie Edge nie wykonuje żadnych działań z niestandardową wiadomością żądania. Po utworzeniu Edge możesz kontynuować proces z pierwotnym żądaniem. Aby używać żądania niestandardowego, dodaj zasadę taką jak jako zasadę objaśnienia usługi do serwera proxy, która może przekazać żądanie niestandardowe do serwera proxy posprzedażna.
Na przykład te przykłady pozwalają tworzyć niestandardowe komunikaty dotyczące żądań:
Przykład 1
Ten przykład tworzy niestandardowy obiekt żądania za pomocą funkcji Assign Message:
<AssignMessage name="AssignMessage-3"> <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo> <Copy> <Headers> <Header name="user-agent"/> </Headers> </Copy> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.addy}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
Ten przykład:
- Tworzy nowy obiekt wiadomości żądania o nazwie „MyCustomRequest”.
- W MyCustomRequest ta zasada:
- Kopiuje wartość nagłówka HTTP
user-agent
z nagłówka przychodzącego nową wiadomość. Ponieważ<Copy>
wykorzystuje bezwzględne odwołanie do funkcjiuser-agent
zmiennej przepływu, brak musisz określić atrybutsource
w<Copy>
. - Ustawia parametr zapytania
address
w komunikacie niestandardowym na wartość parametru zapytaniaaddy
żądania przychodzącego. - Ustawia czasownik HTTP na
GET
.
- Kopiuje wartość nagłówka HTTP
- Ustawia wartość
<IgnoreUnresolvedVariables>
na „false” (fałsz). Gdy<IgnoreUnresolvedVariables>
to „false” (fałsz), jeśli jedna ze zmiennych, które próbuje dodać zasada, nie istnieje, Edge zostanie zatrzymana. i przetwarza dane w ramach procesu API.
Przykład 2
Oto inny przykład tworzenia niestandardowego obiektu żądania za pomocą funkcji Assign Wiadomość:
<AssignMessage name="AssignMessage-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> <Payload contentType="text/xml"> <request><operation>105</operation></request> </Payload> </Set> </AssignMessage>
W tym przykładzie tworzymy nowe żądanie niestandardowe o nazwie „partner.request”. Następnie ustawia
<Verb>
i <Payload>
w sprawie nowej prośby.
Dostęp do niestandardowej wiadomości z prośbą można uzyskać w innej zasadzie AssignMessage, która występuje później w
przepływu danych. Poniższy przykład pobiera wartość niestandardowego komunikatu żądania
Nagłówek user-agent
:
<AssignMessage name="custom-request-1-access"> <DisplayName>custom-request-1-access</DisplayName> <AssignTo createNew="false" type="request"></AssignTo> <Set> <Headers> <Header name="user-agentCopyCustomRequest">{MyCustomRequest.header.user-agent}</Header> </Headers> </Set> </AssignMessage>
Filmy
Aby dowiedzieć się więcej o zasadzie AssignMessage, obejrzyj poniższe filmy.
Wideo | Opis |
---|---|
Dlaczego przydzielasz Zasady dotyczące wiadomości? | poznać zalety stosowania zasady AssignMessage do modyfikowania żądania do interfejsu API; bez modyfikowania kodu backendu. |
Kopiuj elementy interfejsu API przy użyciu zasady AssignMessage | Skopiuj elementy z żądania lub odpowiedzi interfejsu API i utwórz nowe żądanie lub odpowiedź przy użyciu zasady AssignMessage. |
Usuń interfejs API elementów korzystających z zasady AssignMessage | Usuń elementy interfejsu API i zmodyfikuj interfejs API, zanim dotrze do docelowego backendu za pomocą Zasada AssignMessage. |
Dodaj i skonfiguruj interfejs API elementów korzystających z zasady AssignMessage | zmień żądanie lub odpowiedź interfejsu API przez dodanie parametrów zapytania, nagłówków, parametrów formularza lub ładunków za pomocą zasady AssignMessage. |
Utwórz niestandardowy zmienne korzystające z zasady AssignMessage | Ustaw niestandardowe zmienne przepływu za pomocą zasady AssignMessage i wykorzystaj zmienne w innych zasad na serwerze proxy API. |
Utwórz nowe obiektów żądań lub odpowiedzi za pomocą zasady AssignMessage | Tworzenie nowych obiektów żądań lub odpowiedzi interfejsu API przy użyciu zasady AssignMessage w interfejsie API w środowisku wykonawczym. |
Tworzenie przykładowego interfejsu API przy użyciu zasady AssignMessage | Utwórz prosty przykładowy interfejs API REST, dodając zasadę AssignMessage w odpowiedzi przepływu danych. |
Ustaw lub zmodyfikuj ładunek z użyciem zasady AssignMessage | Przekształć żądanie REST na żądanie SOAP przez ustawienie ładunku SOAP przy użyciu zasady AssignMessage w czasie działania interfejsu API. |
Kody błędów
W tej sekcji opisaliśmy kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów, które są ustawiane przez Edge, gdy te zasady powodują błąd. Te informacje są ważne, jeśli tworzysz reguły błędów do obsługi błędów. Więcej informacji znajdziesz w artykułach Więcej informacji o błędach związanych z naruszeniem zasad i Rozwiązywanie problemów.
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna | Napraw |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | Zasada nie mogła ustawić zmiennej. Sprawdź ciąg błędów pod kątem nazwy niezdefiniowanej zmiennej. | |
steps.assignmessage.VariableOfNonMsgType |
500 |
Ten błąd występuje, jeśli atrybut Zmienne typu message reprezentują całe żądania i odpowiedzi HTTP. Wbudowane zmienne przepływu Edge |
build |
steps.assignmessage.UnresolvedVariable |
500 |
Ten błąd występuje, jeśli zmienna określona w zasadzie przypisywania wiadomości:
|
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 |
---|---|---|
InvalidIndex |
Jeśli indeks określony w elementach <Copy> lub <Remove> zasady Assign Message (Przypisywanie wiadomości) wynosi 0 lub jest liczbą ujemną, wdrożenie serwera proxy interfejsu API się nie uda.
|
build |
InvalidVariableName |
Jeśli element podrzędny <Name> jest pusty lub nie jest określony w elemencie <AssignVariable> , wdrożenie interfejsu API zakończy się niepowodzeniem, ponieważ nie ma prawidłowej nazwy zmiennej, której można przypisać wartość. Wymagana jest prawidłowa nazwa zmiennej.
|
build |
InvalidPayload |
ładunek określony w zasadach jest nieprawidłowy. |
Zmienne dotyczące błędów
Te zmienne są ustawiane, gdy ta zasada wywołuje błąd w czasie działania. Więcej informacji znajdziesz w artykule Podstawowe informacje o błędach związanych z zasadami.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu, jak podano w tabeli Błędy środowiska wykonawczego powyżej. Nazwa błędu to ostatni element kodu błędu. | fault.name Matches "UnresolvedVariable" |
assignmessage.policy_name.failed |
policy_name to nazwa zasady określona przez użytkownika, która spowodowała błąd. | assignmessage.AM-SetResponse.failed = true |
Przykładowa odpowiedź na błąd
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
Przykładowa reguła błędu
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
Schematy
Każdy typ zasad jest definiowany przez schemat XML (.xsd
). Schematy zasad
są dostępne na GitHubie.
Powiązane artykuły
Pracuję przykładowe zasady AssignMessage znajdziesz w przykładach platformy API.
Bardziej zaawansowany przykład zastępowania parametru target.url
ProxyEndpoint znajdziesz w tym artykule społeczności Apigee.
Aby wyświetlić „ustaloną ścieżkę” w działaniu w zasadzie objaśnienia usługi, zapoznaj się z tym artykułem Learn by wykorzystaniem example w przykładach Apigee na GitHubie. Po prostu skopiuj repozytorium postępuj zgodnie z instrukcjami w tym temacie. W przykładzie użyto zasady AssignMessage do ustawienia ścieżki żądania. a następnie za pomocą zasad dotyczących wywołań usługi, aby wysłać żądanie do usługi zewnętrznej.