Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an. info
Was
Die AssignMessage-Richtlinie ändert oder erstellt neue Anfrage- und Antwortnachrichten während des API-Proxy-Ablaufs. Mit der Richtlinie können Sie die folgenden Aktionen für diese Nachrichten ausführen:
- Einer Nachricht neue Formularparameter, Header oder Abfrageparameter hinzufügen
- Vorhandene Properties von einer Nachricht in eine andere kopieren
- Header, Abfrageparameter, Formularparameter und/oder Nachrichtennutzlasten aus einer Nachricht entfernen
- Den Wert vorhandener Eigenschaften in einer Nachricht festlegen
Mit der AssignMessage-Richtlinie können Sie in der Regel Attribute der Anfrage oder Antwort hinzufügen, ändern oder entfernen. Sie können jedoch die Richtlinie „Nachricht zuweisen“ verwenden, um eine benutzerdefinierte Anfrage oder Antwort zu erstellen und sie an ein alternatives Ziel weiterzuleiten, wie unter Benutzerdefinierte Anfragenachrichten erstellen beschrieben.
Die Richtlinie AssignMessage kann Ablaufvariablen mit den folgenden untergeordneten Elementen erstellen oder ändern:
Element <AssignMessage>
Definiert eine AssignMessage-Richtlinie.
Standardwert | Siehe Standardrichtlinie Tab unten |
Erforderlich? | Erforderlich |
Typ | Komplexes Objekt |
Übergeordnetes Element | – |
Untergeordnete Elemente |
<Add> <AssignTo> <AssignVariable> <Copy> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
Das <AssignMessage>
-Element verwendet die folgende Syntax:
Syntax
Das <AssignMessage>
-Element verwendet die folgende Syntax:
<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>
Standardrichtlinie
Das folgende Beispiel zeigt die Standardeinstellungen, wenn Sie Ihrem Ablauf in der Edge-UI eine AssignMessage-Richtlinie hinzufügen:
<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>
Wenn Sie eine neue AssignMessage-Richtlinie in die Edge-UI einfügen, enthält die Vorlage Stubs für alle möglichen Vorgänge. Normalerweise wählen Sie aus, welche Vorgänge Sie mit dieser Richtlinie ausführen möchten, und entfernen die restlichen untergeordneten Elemente. Wenn Sie beispielsweise einen Kopiervorgang ausführen möchten, verwenden Sie das Element <Copy>
und entfernen Sie <Add>
, <Remove>
und andere untergeordnete Elemente aus der Richtlinie, damit sie besser lesbar sind.
Dieses Element hat folgende Attribute, die allen Richtlinien gemeinsam sind:
Attribut | Standard | Erforderlich? | Beschreibung |
---|---|---|---|
name |
– | Erforderlich |
Der interne Name der Richtlinie. Der Wert des Attributs Optional können Sie das Element |
continueOnError |
falsch | Optional | Ist das Element auf "false" gesetzt, wird ein Fehler zurückgegeben, wenn eine Richtlinie fehlschlägt. Dies ist für die meisten Richtlinien das erwartete Verhalten. Ist das Element auf "true" gesetzt, wird die Ausführung des Ablaufs auch nach dem Fehlschlagen einer Richtlinie fortgesetzt. |
enabled |
wahr | Optional | Auf "true" setzen, um die Richtlinie durchzusetzen. Auf "false" setzen, um die Richtlinie zu "deaktivieren". Die Richtlinie wird nicht durchgesetzt, selbst wenn sie mit einem Ablauf verknüpft ist. |
async |
falsch | Eingestellte Funktionen | Dieses Attribut wurde verworfen. |
Die folgende Tabelle enthält eine allgemeine Beschreibung der untergeordneten Elemente von <AssignMessage>
:
Untergeordnetes Element | Erforderlich? | Beschreibung |
---|---|---|
Häufige Vorgänge | ||
<Add> |
Optional | Fügt dem Nachrichtenobjekt, das im Element <AssignTo> angegeben ist, Informationen hinzu.
|
<Copy> |
Optional | Kopiert Informationen aus der Nachricht, die mit dem Attribut source in das Nachrichtenobjekt angegeben wurde, das im Element <AssignTo> angegeben ist. |
<Remove> |
Optional | Löscht die angegebenen Elemente aus der im Element <AssignTo> angegebenen Nachrichtenvariable. |
<Set> |
Optional | Ersetzt Werte vorhandener Attribute in der Anfrage oder Antwort, die durch das Element <AssignTo> angegeben werden.
|
Weitere untergeordnete Elemente | ||
<AssignTo> |
Optional | Gibt an, auf welche Nachricht die AssignMessage-Richtlinie angewendet wird. Das kann die Standardanfrage oder -antwort sein oder eine neue, benutzerdefinierte Nachricht sein. |
<AssignVariable> |
Optional | Weist einer Flussvariablen einen Wert zu. Wenn die Variable nicht vorhanden ist, wird sie von <AssignVariable> erstellt. |
<IgnoreUnresolvedVariables> |
Optional | Bestimmt, ob die Verarbeitung beendet wird, wenn eine nicht aufgelöste Variable erkannt wird. |
Jedes dieser untergeordneten Elemente wird in den folgenden Abschnitten beschrieben.
Beispiele
Die folgenden Beispiele zeigen einige Möglichkeiten, wie Sie die Richtlinie AssignMessage verwenden können:
1: Header hinzufügen
Im folgenden Beispiel wird ein Header mit dem Element <Add>
in die Anfrage eingefügt:
<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: Nutzlast entfernen
Im folgenden Beispiel wird die Nutzlast aus der Antwort mit dem Element <Remove>
gelöscht:
<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: Antwort ändern
Im folgenden Beispiel wird ein vorhandenes Antwortobjekt durch Hinzufügen eines Headers geändert:
<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>
In diesem Beispiel wird keine neue Nachricht erstellt. Stattdessen wird eine vorhandene Antwortnachricht durch Hinzufügen eines HTTP-Headers geändert.
Da in diesem Beispiel ein Variablenname im Element <AssignTo>
weggelassen und type
als "Antwort" angegeben wird, ändert diese Richtlinie das vom Zielserver zurückgegebene Antwortobjekt.
Der HTTP-Header, der der Antwortnachricht durch diese Richtlinie hinzugefügt wird, wird von einer Variable abgeleitet, die von der LookupCache-Richtlinie ausgefüllt wird. Daher enthält die geänderte Antwortnachricht eine HTTP-Header, die angibt, ob die Ergebnisse aus dem Cache abgerufen wurden. Das Festlegen von Headern in der Antwort kann für die Fehlerbehebung und die Fehlerbehebung nützlich sein.
4: Dynamischen Content festlegen
Sie können mit AssignMessage dynamische Inhalte in die Nutzlast von Antwort- und Anfragenachrichten einbetten.
Um Edge-Ablaufvariablen in eine XML-Nutzlast einzubetten, setzen Sie die angegebene Variable in geschweifte Klammern. Beispiel: {prefix.name}
Im folgenden Beispiel wird der Wert der user-agent
-HTTP-Header-Ablaufvariable in ein XML-Element mit dem Namen User-agent
eingebettet:
<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>
Für JSON-Nutzlasten können Sie mithilfe der Attribute variablePrefix
und variableSuffix
Variablen mit Trennzeichen einfügen, wie im folgenden Beispiel gezeigt:
<AssignMessage name="set-payload"> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> { "user-agent": "@request.header.user-agent#" } </Payload> </AssignMessage>
Eine vollständige Liste der Ablaufvariablen finden Sie unter Ablaufvariablen.
Ab dem Cloud-Release 16.08.17 können Sie Variablen auch mit geschweiften Klammern einfügen.
5: Abfrageparameter entfernen
Im folgenden Beispiel wird der Abfrageparameter apikey
aus der Anfrage entfernt:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Es empfiehlt sich, den Abfrageparameter apikey
aus der Anfragenachricht zu entfernen, wenn Sie die VerifyAPIKey-Richtlinie zur Nutzerauthentifizierung verwenden. Dadurch verhindern Sie, dass vertrauliche Schlüsselinformationen an das Backend-Ziel übergeben werden.
6: Variablen festlegen/abrufen
Im folgenden Beispiel werden drei Richtlinien zum Zuweisen von Nachrichten verwendet:
- Erstellt drei Ablaufvariablen in der Anfrage mit statischen Werten
- Ruft die Ablaufariablen dynamisch in einer zweiten Richtlinie im Anfrageablauf ab.
- Legt sie in der Nutzlast der Antwort fest.
<!-- 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>
In der ersten Richtlinie werden mit dem Element <AssignVariable>
drei Variablen in der Anfrage erstellt und festgelegt. Jedes <Name>
-Element gibt einen Variablennamen an und <Value>
gibt den Wert an.
Die zweite Richtlinie verwendet das Element <AssignVariable>
, um die Werte zu lesen und drei neue Variablen zu erstellen:
<!-- 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>
In der zweiten Richtlinie verweist das <Ref>
-Element auf die Quellvariable und <Name>
-Elemente die Namen der neuen Variablen. Wenn auf die Variable, auf die von dem <Ref>
-Element verwiesen wird, nicht zugegriffen werden kann, können Sie den vom Element <Value>
angegebenen Wert verwenden.
Diese Richtlinien ausprobieren:
- Fügen Sie dem Anfrageablauf Richtlinien 1 und 2 hinzu. Die Richtlinie 1 muss vor Richtlinie 2 abgelegt werden.
- Fügen Sie die dritte Richtlinie in den Antwort-Ablauf ein.
- Die dritte Richtlinie verwendet das Element
<Set>
, um der Antwort die Variablen hinzuzufügen. Im folgenden Beispiel wird eine XML-Nutzlast in der Antwort erstellt, die Edge an den Client zurückgibt:<!-- 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>
Die Syntax für den Zugriff auf Ablaufvariablen in
<Set>
ist die Verwendung von geschweiften Klammern.Setzen Sie das Attribut
contentType
des Elements<Payload>
auf „application/xml“. - Senden Sie eine Anfrage an Ihren API-Proxy, zum Beispiel:
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
Optional können Sie die Ergebnisse über ein Dienstprogramm wie
xmllint
instanziieren, sodass die XML in einer übersichtlichen Struktur angezeigt wird:curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
Der Antworttext sollte so aussehen:
<wrapper> <secret>42</secret> <config> <environment>test</environment> <protocol>gopher</protocol> </config> </wrapper>
7: Antwortheader für Service-Callout abrufen
Im folgenden Beispiel befindet sich eine ServiceCallout-Richtlinie in der API-Proxy-Anfrage und die Callout-Antwort enthält mehrere Header mit demselben Namen (Set-Cookie
). Wenn die Antwortvariable des Service Callout den Standardwert calloutResponse
hat, ruft die folgende Richtlinie den zweiten Headerwert Set-Cookie
ab.
<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>
Verwenden Sie stattdessen die folgende Variable, um alle Headerwerte aufzulisten:
{calloutResponse.header.Set-Cookie.values}
Für jedes untergeordnete Element in dieser Referenz gibt es zusätzliche Beispiele. Weitere Beispiele finden Sie in AssignMessage-Beispiel auf GitHub.
Verweis auf untergeordnetes Element
In diesem Abschnitt werden die untergeordneten Elemente von <AssignMessage>
beschrieben.
<Add>
Fügt der Anfrage oder Antwort, die durch das Element <AssignTo>
angegeben wird, Informationen hinzu.
Das <Add>
-Element fügt der Nachricht neue Attribute hinzu, die in der ursprünglichen Nachricht nicht vorhanden sind. Zum Ändern der Werte von vorhandenen Attributen verwenden Sie das Element <Set>
.
Standardwert | – |
Erforderlich? | Optional |
Typ | Komplexer Typ |
Übergeordnetes Element |
<AssignMessage>
|
Untergeordnete Elemente |
<FormParams> <Headers> <QueryParams> |
Das <Add>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel werden mit dem Element <FormParams>
die Werte von drei Abfragestringparametern aus der ursprünglichen Anfrage abgerufen und als Formularparameter in der Zielendpunktanfrage festgelegt:
<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>
Beispiel 2
Im folgenden Beispiel wird der Header User-Agent
mit dem Element <Headers>
der Zielendpunktanfrage hinzugefügt:
<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>
Beispiel 3
Im folgenden Beispiel wird mit dem Element <QueryParams>
ein einzelner Abfrageparameter mit einem statischen Wert zur Anfrage hinzugefügt:
<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>
In diesem Beispiel wird <Add>
im Anfragefluss verwendet. Wenn Sie die Ergebnisse in einem Tool wie dem Trace-Tool betrachten, wird die Anfrage an „http://httpbin.org/get“ zu „http://httpbin.org/get?myParam=42“.
Die untergeordneten Elemente von <Add>
unterstützen die dynamische Stringersetzung, die als Nachrichtenvorlagen bezeichnet wird.
<FormParams>
(untergeordnet unter <Add>
)
Fügt der Anfragenachricht neue Formularparameter hinzu. Dieses Element hat keine Auswirkungen auf eine Antwortnachricht.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <FormParam> -Elementen |
Übergeordnetes Element |
<Add>
|
Untergeordnete Elemente |
<FormParam> |
Das <FormParams>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel werden ein einzelner Formularparameter („answer“) und ein statischer Wert („42“) zur Anfrage hinzugefügt:
<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>
Beispiel 2
Im folgenden Beispiel wird der Wert des Abfragestringparameters name
abgerufen und zur Anfrage als Formularparameter hinzugefügt:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> </AssignMessage>
In diesem Beispiel wird kein Ziel mit <AssignTo>
angegeben. Durch diese Richtlinie wird der Parameter nur der Anfrage hinzugefügt.
Beispiel 3
Im folgenden Beispiel werden mehrere Formularparameter zur Anfrage hinzugefügt:
<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>
In diesem Beispiel werden die Abfragestringparameter aus der ursprünglichen Anfrage abgerufen und als Formparameter an die Anfrage hinzugefügt, die an den Zielendpunkt gesendet werden.
Verwenden Sie das Trace-Tool, um sich den Ablauf anzusehen. Sie sehen, dass der Text der Anfrage die URL-codierten Formulardaten enthält, die ursprünglich als Abfragestringparameter übergeben wurden:
%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en
Sie können <FormParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verb: POST
- Nachrichtentyp: Anfrage
- Eine (oder beide) der folgenden:
- Formulardaten: Legen Sie einen Wert oder "" (den leeren String) fest. Beispiel: Mit
curl
fügen Sie-d ""
in Ihre Anfrage ein. Content-Length
-Header: Wird auf 0 gesetzt (wenn sich keine Daten in der ursprünglichen Anfrage befinden, andernfalls die aktuelle Länge in Byte). Beispiel: Mitcurl
fügen Sie-H "Content-Length: 0"
in Ihre Anfrage ein.
- Formulardaten: Legen Sie einen Wert oder "" (den leeren String) fest. Beispiel: Mit
Beispiel:
curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded" https://ahamilton-eval-test.apigee.net/am-test
Wenn Sie <FormParams>
hinzufügen, setzt Edge den Header Content-Type
der Anfrage auf „application/x-www-form-urlencoded“, bevor die Nachricht an den Zieldienst gesendet wird.
<Headers>
(untergeordnet unter <Add>
)
Fügt der angegebenen Anfrage oder Antwort neue Header hinzu, die durch das Element <AssignTo>
angegeben werden.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <Header> -Elementen |
Übergeordnetes Element |
<Add>
|
Untergeordnete Elemente |
<Header> |
Das <Headers>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Add> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird der Header der Anfrage user-agent
hinzugefügt und diesem Header wird der Wert der Ablaufvariablen request.user.agent
zugewiesen.
<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>
(untergeordnet unter <Add>
)
Fügt der Anfrage neue Abfrageparameter hinzu. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <QueryParam> -Elementen |
Übergeordnetes Element |
<Add>
|
Untergeordnete Elemente |
<QueryParam> |
Das <QueryParams>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird der Abfrageparameter „myParam“ zur Anfrage hinzugefügt und dieser wird der Wert „42“ zugewiesen:
<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>
Sie können <QueryParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verb: GET
- Nachrichtentyp: Anfrage
Außerdem können Sie Abfrageparameter nur festlegen, wenn das type
-Attribut des <AssignTo>
-Elements eine Anfragenachricht ist. Wenn Sie sie für eine Antwort festlegen, hat dies keine Auswirkungen.
Wenn Sie in der Richtlinie (<Add><QueryParams/></Add>
) ein leeres Array von Abfrageparametern definieren, fügt die Richtlinie keine Abfrageparameter hinzu. Dies entspricht dem Weglassen von <QueryParams>
.
<AssignTo>
Bestimmt das Objekt, mit dem die Richtlinie AssignMessage arbeitet. Folgende Optionen sind verfügbar:
- Anfragenachricht:Der
request
, der vom API-Proxy empfangen wurde - Antwortnachricht: Der
response
, der vom Zielserver zurückgegeben wurde - Benutzerdefinierte Nachricht: Eine benutzerdefinierte Anfrage oder ein Antwortobjekt
In einigen Fällen können Sie das Objekt nicht ändern, für das die AssignMessage-Richtlinie verwendet wird.
Sie können beispielsweise nicht<Add>
oder<Set>
nutzen, um Suchparameter (<QueryParams>
) oder Formparameter (<FormParams>
) in der Antwort hinzuzufügen oder zu ändern. Sie können nur Suchparameter und Formularparameter bei der Anfrage bearbeiten.
Standardwert | – |
Erforderlich? | Optional |
Typ | String |
Übergeordnetes Element |
<AssignMessage>
|
Untergeordnete Elemente | Keine |
Wenn Sie <AssignTo>
nicht angeben, wird die Richtlinie auf die Standardanfrage oder -antwort angewendet, die davon abhängt, wo die Richtlinie ausgeführt wird. Wenn die Richtlinie im Anfragefluss ausgeführt wird, wirkt sie sich auf die Anfragenachricht aus. Wenn es im Antwortablauf ausgeführt wird, wirkt sich die Richtlinie standardmäßig auf die Antwort aus.
Das <AssignTo>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird angegeben, dass das Ziel die ursprüngliche Anfrage ist, die an den Zielendpunkt gesendet wird:
<AssignMessage name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Wenn Sie createNew
auf „false“ (Standardeinstellung) setzen, wird in diesem Beispiel keine neue Anfrage erstellt. Alle Vorgänge in dieser Richtlinie wirken sich auf die ursprüngliche Anfrage aus.
Beispiel 2
Im folgenden Beispiel wird ein neues Anfrageobjekt erstellt:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Wenn Sie eine neue Anfrage oder ein neues Antwortobjekt erstellen, werden die anderen Elemente der Richtlinie AssignMessage (wie <Add>
, <Set>
und <Set>
) für dieses neue Anfrageobjekt ausgeführt.
Sie können später in anderen Richtlinien des Ablaufs auf das neue Anfrageobjekt zugreifen oder das neue Anfrageobjekt mit einer ServiceCallout-Richtlinie an einen externen Dienst senden.
Beispiel 3
Im folgenden Beispiel wird ein neues Anfrageobjekt mit dem Namen „MyRequestObject“ erstellt:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> </AssignMessage>
Wenn Sie eine neue Anfrage oder ein neues Antwortobjekt erstellen, werden die anderen Elemente der Richtlinie AssignMessage (wie <Add>
, <Set>
und <Set>
) für dieses neue Anfrageobjekt ausgeführt.
Sie können später in anderen Richtlinien des Ablaufs auf das neue Anfrageobjekt zugreifen oder das neue Anfrageobjekt mit einer ServiceCallout-Richtlinie an einen externen Dienst senden.
In der folgenden Tabelle werden die Attribute von <AssignTo>
beschrieben:
Attribut | Beschreibung | Erforderlich? | Typ |
---|---|---|---|
createNew |
Bestimmt, ob diese Richtlinie eine neue Nachricht erstellt, wenn Werte zugewiesen werden. Bei „true“ erstellt die Richtlinie eine neue Variable des durch Wenn "falsch", antwortet die Richtlinie auf zwei Arten:
Wenn
|
Optional | Boolesch |
transport |
Gibt den Transporttyp für den Anfrage- oder Antwortnachrichtentyp an. Der Standardwert ist „http“ (der einzige unterstützte Wert). |
Optional | String |
type |
Gibt den Typ der neuen Nachricht an, wenn createNew "wahr" ist. Gültige Werte sind "Anfrage" oder "Antwort".
Der Standardwert ist „request“. Wenn Sie dieses Attribut weglassen, erstellt Edge entweder eine Anfrage oder eine Antwort, je nachdem, an welcher Stelle im Ablauf diese Richtlinie ausgeführt wird. |
Optional | String |
<AssignVariable>
Weist einer Zielflussvariable einen Wert zu (z.B. eine Variable, deren Wert durch die Richtlinie „Nachricht zuweisen“ festgelegt wird). Wenn die Ablaufvariable nicht vorhanden ist, wird sie von <AssignVariable>
erstellt.
Standardwert | – |
Erforderlich? | Optional |
Typ | Komplexer Typ |
Übergeordnetes Element |
<AssignMessage>
|
Untergeordnete Elemente |
<Name> (erforderlich)<Ref> <Template> <Value> |
Der Wert, den Sie der Variablen des Zielflusses zuweisen, kann einen der folgenden Werte haben:
- Literalstring: Mit dem untergeordneten Element
<Value>
können Sie einen Literalstring-Wert für die Zielablaufvariable angeben. - Ablaufvariable: Verwenden Sie das untergeordnete Element
<Ref>
, um den Wert einer vorhandenen Ablaufvariablen für die Zielablaufvariable anzugeben. Eine vollständige Liste der Ablaufvariablen, die als Quelle verwendet werden können, finden Sie unter Referenz für Ablaufvariablen. - Nachrichtenvorlage: Verwenden Sie das untergeordnete Element
<Template>
, um eine Nachrichtenvorlage für die Variable des Zielablaufs anzugeben.
Das <AssignVariable>
-Element verwendet die folgende Syntax:
Syntax
<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>
Verwenden Sie das Element <Ref>
, um die Quellvariable anzugeben. Wenn die Variable, auf die in <Ref>
verwiesen wird, nicht zugänglich ist, verwendet Edge den Wert, der im <Value>
-Element angegeben ist. Wenn Sie <Template>
definieren, hat es Vorrang vor den anderen untergeordneten Elementen.
Beispiel 1
Im folgenden Beispiel wird der Wert einer neuen Variable myvar
auf den Literalwert „42“ festgelegt:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Beispiel 2
Im folgenden Beispiel wird der Wert der Ablaufvariablen zugewiesen. request.header.user-agent
in die Zielvariable myvar
und der Wert des Abfrageparameters country
in die Zielvariable ein.
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>
Wenn eine der Zuweisungen fehlschlägt, weist Edge stattdessen der Zielablaufvariablen den Wert „ErrorOnCopy“ zu.
Wenn die Ablaufvariablen myvar
oder Country
nicht vorhanden sind, erstellt <AssignVariable>
sie.
Beispiel 3
Im folgenden Beispiel wird das untergeordnete Element <Template>
verwendet, um zwei Kontextvariablen mit einem Literalstring (einen Bindestrich) zu verketten:
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
Eine häufige Verwendung von <AssignVariable>
besteht darin, einen Standardwert für einen Abfrageparameter, einen Header oder einen anderen Wert festzulegen, der mit der Anfrage übergeben werden kann. Dazu verwenden Sie eine Kombination aus den untergeordneten Elementen <Ref>
und <Value>
. Weitere Informationen finden Sie in den Beispielen für <Ref>
.
<Name>
(untergeordnet unter <AssignVariable>
)
Gibt den Namen der Zielablaufvariablen an (z.B. der Variablen, deren Wert durch die Richtlinie „Nachricht zuweisen“ festgelegt wird). Wenn die Variable in <AssignVariable>
nicht existiert, erstellt die Richtlinie eine Variable mit diesem Namen.
Standardwert | – |
Erforderlich? | Erforderlich |
Typ | String |
Übergeordnetes Element |
<AssignVariable>
|
Untergeordnete Elemente | Keine |
Das <Name>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> </AssignVariable> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird die Zielvariable als myvar
angegeben und auf den Literalwert „42“ gesetzt:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Wenn myvar
nicht vorhanden ist, wird er von <AssignVariable>
erstellt.
<Ref>
(untergeordnet unter <AssignVariable>
)
Gibt die Quelle der Zuweisung als Ablaufvariable an. Die Ablaufvariable kann eine der vordefinierten Ablaufvariablen sein, die in der Referenz zu Ablaufvariablen aufgeführt sind, oder eine von Ihnen erstellte benutzerdefinierte Ablaufvariable.
Der Wert von <Ref>
wird immer als Flussvariable interpretiert. Sie können keinen Literalstring als Wert angeben. Wenn Sie einen Literalstring-Wert zuweisen möchten, verwenden Sie stattdessen das Element <Value>
.
Standardwert | – |
Erforderlich? | Optional |
Typ | String |
Übergeordnetes Element |
<AssignVariable>
|
Untergeordnete Elemente | Keine |
Wenn Sie eine Ablaufvariable mit <Ref>
angeben, lassen Sie die einschließenden Klammern "{}" weg, die Sie normalerweise auf eine Ablaufvariable verwenden würden. So legen Sie beispielsweise den Wert Ihrer neuen Variablen auf den Wert der client.host
-Ablaufvariablen fest:
Do this (no brackets): <Ref>client.host</Ref> Do NOT do this (brackets): <Ref>{client.host}</Ref>
Um einen Standardwert für die Zielablaufvariable zu definieren, verwenden Sie <Value>
in Kombination mit <Ref>
. Wenn die von <Ref>
angegebene Ablaufvariable nicht vorhanden ist, nicht gelesen oder null sein kann, weist Edge den Wert von <Value>
stattdessen der Zielablaufvariable zu.
Das <Ref>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> </AssignVariable> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird der Wert der Ablaufvariablen request.header.user-agent
der Zielablaufvariable myvar
und der Wert des Abfrageparameters country
der Variable Country
zugewiesen:
<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>
In diesem Beispiel hat Edge für jede Zuweisung keinen Standard- oder Fallback-Wert festgelegt.
Beispiel 2
Im folgenden Beispiel wird der Wert der Ablaufvariablen request.header.user-agent
der Zielablaufvariable myvar
und dem Wert des Abfrageparameters country
der Variable Country
zugewiesen:
<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>
Wenn die Werte der request.header.user-agent
-Ablaufvariable oder der Abfrageparameter Country
null, unleserlich oder fehlerhaft sind, weist Edge den neuen Variablen den Wert „ErrorOnCopy“ zu.
Beispiel 3
Ein häufiger Anwendungsfall für <AssignVariable>
ist die Festlegung des Standardwerts eines Abfrageparameters, eines Headers oder eines anderen Werts, der mit der Anfrage übergeben werden kann. Sie erstellen beispielsweise einen Wetter-API-Proxy, bei dem die Anfrage einen einzelnen Abfrageparameter namens „w“ annimmt. Dieser Parameter enthält die ID der Stadt, für die das Wetter gelten soll. Die Anfrage-URL hat das folgende Format:
http://myCO.com/v1/weather/forecastrss?w=city_ID
Um einen Standardwert für „w“ zu definieren, erstellen Sie eine Zuweisungsrichtlinie so:
<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>
In diesem Beispiel erhält <AssignVariable>
den Wert von request.queryparam.w
und weist ihn sich selbst zu. Wenn die Flussvariable null ist, d. h., der Abfrageparameter „w“ wurde in der Anfrage weggelassen, wird in diesem Beispiel der Standardwert aus dem Element <Value>
verwendet. Daher können Sie eine Anfrage an diesen API-Proxy senden, bei dem der Abfrageparameter „w“ weggelassen wird:
http://myCO.com/v1/weather/forecastrss
...und der API-Proxy gibt weiterhin ein gültiges Ergebnis zurück.
Anders als bei Verwendung <Value>
muss der Wert von<Ref>
eine Flussvariable sein, z. B. ein Attribut eines request
-, response
- odertarget
-Objekts. Der Wert kann auch eine von Ihnen erstellte benutzerdefinierte Ablaufvariable sein.
Wenn Sie eine Ablaufvariable angeben, die für den Wert von <Ref>
nicht vorhanden ist, und der Wert von <IgnoreUnresolvedVariables>
„wahr“ ist, gibt Edge einen Fehler aus.
<Template>
(untergeordnet unter <AssignVariable>
)
Gibt eine Nachrichtenvorlage an. Mit einer Nachrichtenvorlage können Sie eine Stringsubstitution durchführen, wenn die Richtlinie ausgeführt wird, und Literalstrings mit Variablennamen in geschweiften Klammern kombinieren. Darüber hinaus unterstützen SMS-Vorlagen Funktionen wie Maskierung und Groß- und Kleinschreibung.
Verwenden Sie das Attribut ref
, um eine Ablaufvariable anzugeben, deren Wert eine Nachrichtenvorlage ist. Sie können beispielsweise eine Nachrichtenvorlage als benutzerdefiniertes Attribut in einer Entwickler-App speichern. Wenn Edge die Entwickler-App identifiziert, nachdem der API-Schlüssel oder das Sicherheitstoken (über eine zusätzliche Richtlinie) überprüft wurde, kann das Element <AssignVariable>
die Nachrichtenvorlage aus dem benutzerdefinierten Attribut der App verwenden, das als Ablaufvariable aus der Sicherheitsrichtlinie verfügbar ist. Im folgenden Beispiel wird davon ausgegangen, dass die Nachrichtenvorlage in einem Kundenattribut namens message_template
in der Entwickleranwendung verfügbar ist, die den API-Aufruf durchführt, bei dem die VerifyAPIKey-Richtlinie zur Überprüfung des API-Schlüssel der App verwendet wurde:
<AssignVariable ref='verifyapikey.myVerifyAPIKeyPolicy.app.name.message_template'/>
Standardwert | – |
Erforderlich? | Optional |
Typ | String |
Übergeordnetes Element |
<AssignVariable>
|
Untergeordnete Elemente | Keine |
Das <Template>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Template>message_template</Template> or <Template ref='template_variable'></Template> </AssignVariable> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird die Syntax der Nachrichtenvorlagen verwendet, um zwei Kontextvariablen mit einem Literalstring (einen Bindestrich) zu verketten:
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
Beispiel 2
Im folgenden Beispiel wird eine Flussvariable angegeben, wobei der Wert der Variablen eine vordefinierte Nachrichtenvorlage ist. Verwenden Sie diese Option, wenn Sie eine vordefinierte Vorlage zur Laufzeit einfügen möchten, ohne die Richtlinie zu ändern:
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_template_variable'/> </AssignVariable> </AssignMessage>
Beispiel 3
Im folgenden Beispiel werden eine Flussvariable und ein Textwert angegeben. Wenn die referenzierte Variable nicht null ist, wird dieser Wert als Vorlage verwendet. Wenn der referenzierte Wert null ist, wird der Textwert (in diesem Fall {system.uuid}-{messageid}
) als Vorlage verwendet. Dieses Muster ist nützlich, um einen Überschreibungswert anzugeben, mit dem Sie in einigen Fällen die Standardvorlage (Textteil) durch dynamisch festgelegte Werte überschreiben möchten. Beispielsweise kann eine bedingte Anweisung einen Wert aus einer Schlüssel/Wert-Zuordnung abrufen und die referenzierte Variable auf diesen Wert setzen:
<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>
(untergeordnet unter <AssignVariable>
)
Definiert den Wert der mit dem Parameter <AssignVariable>
festgelegten Zielablaufvariable. Der Wert wird immer als Literalstring interpretiert. Sie können keine Ablaufvariable als Wert verwenden, selbst wenn Sie den Wert in Klammern ("{}") einschließen. Wenn Sie eine Ablaufvariable verwenden möchten, verwenden Sie stattdessen <Ref>
.
Standardwert | – |
Erforderlich? | Optional |
Typ | String |
Übergeordnetes Element |
<AssignVariable>
|
Untergeordnete Elemente | Keine |
Wenn sie in Verbindung mit dem <Ref>
-Element verwendet werden, fungiert <Value>
als Standardwert (oder Fallback). Wenn <Ref>
nicht angegeben, nicht auflösbar oder null ist, wird der Wert von <Value>
verwendet.
Das Element <Value>
verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird der Wert der Zielflussvariable myvar
auf den Literalwert „42“ gesetzt:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Beispiel 2
Im folgenden Beispiel wird der Wert der Ablaufvariablen request.header.user-agent
zur Ablaufvariablen myvar
und dem Wert des Abfrageparameters country
der Variable Country
zugewiesen:
<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>
Wenn eine der Zuweisungen fehlschlägt, weist <AssignVariable>
stattdessen der Zielablaufvariablen den Wert „ErrorOnCopy“ zu.
<Copy>
Kopiert Werte aus der von dem Attribut source
angegebenen Nachricht an die Nachricht, die mit dem <AssignTo>
-Element angegeben wurde. Wenn Sie kein Ziel mit <AssignTo>
angeben, kopiert diese Richtlinie die Werte in die Anfrage oder Antwort, je nachdem, an welcher Stelle im Ablauf diese Richtlinie ausgeführt wird.
Standardwert | – |
Erforderlich? | Optional |
Typ | String |
Übergeordnetes Element |
<AssignMessage>
|
Untergeordnete Elemente |
<FormParams> <Headers> <Path> <Payload> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
Das <Copy>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel werden ein Header, drei Formularparameter, der Pfad und alle Abfrageparameter von der Anfrage an eine neue benutzerdefinierte Anfrage kopiert:
<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>
Das <Copy>
-Element hat die folgenden Attribute:
Attribut | Beschreibung | Erforderlich? | Typ |
---|---|---|---|
Quelle |
Gibt das Quellobjekt der Kopie an.
|
Optional | String |
<FormParams>
(untergeordnet unter <Copy>
)
Kopiert Formparameter aus der Anfrage, die durch das
<Copy>
-Element angegebene source
-Attribut in die Anfrage angegeben durch das <AssignTo>
-Element. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <FormParam> -Elementen oder ein leeres Array |
Übergeordnetes Element |
<Copy>
|
Untergeordnete Elemente |
<FormParam> |
Das <FormParams>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel wird ein einzelner Formularparameter aus der Anfrage in die benutzerdefinierte Anfrage „MyCustomRequest“ kopiert:
<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>
Beispiel 2
Im folgenden Beispiel werden alle Formularparameter in die benutzerdefinierte Anfrage „MyCustomRequest“ kopiert:
<AssignMessage name="copy-formparams-2"> <Copy source="request"> <FormParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Beispiel 3
Im folgenden Beispiel werden drei Formularparameter in die benutzerdefinierte Anfrage „MyCustomRequest“ kopiert:
<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>
Beispiel 4
Wenn mehrere Formularparameter mit demselben Namen vorhanden sind, verwenden Sie die folgende Syntax:
<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>
In diesem Beispiel werden „f1“, „f2“ und der zweite für „f3“ kopiert. Wenn „f3“ nur einen Wert hat, wird dieser nicht kopiert.
Sie können <FormParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verb: POST
- Nachrichtentyp: Antwort
- Eine (oder beide) der folgenden:
- Formulardaten: Legen Sie einen Wert oder "" (den leeren String) fest. Beispiel: Mit
curl
fügen Sie-d ""
in Ihre Anfrage ein. Content-Length
-Header: Der Wert 0 (wenn sich die Daten nicht in der ursprünglichen Anfrage befinden, andernfalls ist die aktuelle Länge). Beispiel: Mitcurl
fügen Sie-H "Content-Length: 0"
in Ihre Anfrage ein.
- Formulardaten: Legen Sie einen Wert oder "" (den leeren String) fest. Beispiel: Mit
Wenn Sie <FormParams>
kopieren, setzt <Copy>
den Content-Type
der Nachricht auf "application/x-www-form-urlencoded", bevor die Nachricht an den Zieldienst gesendet wird.
<Headers>
(untergeordnet unter <Copy>
)
Kopiert HTTP-Header aus der Anfrage- oder Antwortnachricht, die durch das source
-Attribut des Elements <Copy>
angegeben wurde, in die angegebene Anfrage- oder Antwortnachricht durch das Element <AssignTo>
.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <Header> -Elementen oder ein leeres Array |
Übergeordnetes Element |
<Copy>
|
Untergeordnete Elemente |
<Header> |
Das <Headers>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel wird der Header user-agent
aus der Anfrage in das neue benutzerdefinierte Anfrageobjekt kopiert:
<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>
Beispiel 2
Verwenden Sie zum Kopieren aller Header ein leeres <Headers>
-Element, wie im folgenden Beispiel gezeigt:
<AssignMessage name="copy-headers-2"> <Copy source="request"> <Headers/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Beispiel 3
Wenn es mehrere Header mit demselben Namen gibt, verwenden Sie die folgende Syntax:
<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>
In diesem Beispiel werden "h1", "h2" und der zweite Wert von "h3" kopiert. Wenn „f3“ nur einen Wert hat, wird dieser nicht kopiert.
<Path>
(untergeordnet unter <Copy>
)
Bestimmt, ob der Pfad aus der Quellanfrage in die Zielanfrage kopiert werden soll. Dieses Element hat keine Auswirkungen auf eine Antwort.
Bei "wahr" kopiert diese Richtlinie den Pfad aus der Anfragenachricht, die im source
-Attribut des <Copy>
-Elements angegeben ist zur Anfragenachricht, die durch das Element <AssignTo>
angegeben wird.
Standardwert | Falsch |
Erforderlich? | Optional |
Typ | Boolesch |
Übergeordnetes Element |
<Copy>
|
Untergeordnete Elemente | Keine |
Das <Path>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Path>[false|true]</Path> </Copy> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird angegeben, dass die AssignMessage-Richtlinie den Pfad aus der Quellanfrage in das neue benutzerdefinierte Anfrageobjekt kopieren soll:
<AssignMessage name="copy-path-1"> <Copy source="request"> <Path>true</Path> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Sie können <Path>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Anfrage
<Payload>
(untergeordnet unter <Copy>
)
Legt fest, ob die Nutzlast von der Quelle zum Ziel kopiert werden soll. Die Quelle und das Ziel können Anfragen oder Antworten sein.
Bei "wahr" kopiert diese Richtlinie die Nutzlast aus der Nachricht, die durch das source
-Attribut des <Copy>
-Elements angegeben ist zur Nachricht, die durch das Element <AssignTo>
angegebene wird.
Standardwert | Falsch |
Erforderlich? | Optional |
Typ | Boolesch |
Übergeordnetes Element |
<Copy>
|
Untergeordnete Elemente | Keine |
Das <Payload>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Payload>[false|true]</Payload> </Copy> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird <Payload>
auf "wahr" gesetzt, sodass die Anfragenutzlast von der Anfrage in die Antwort kopiert wird:
<AssignMessage name="copy-payload-1"> <Copy source="request"> <Payload>true</Payload> </Copy> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<QueryParams>
(untergeordnet unter <Copy>
)
Kopiert Abfragestringparameter aus der Anfrage, die durch das <Copy>
-Element angegebenen source
-Attribut in die durch die <AssignTo>
-Element kopiert wird. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <QueryParam> -Elementen oder ein leeres Array |
Übergeordnetes Element |
<QueryParam>
|
Untergeordnete Elemente | Keine |
Das <QueryParams>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel wird der Abfrageparameter „my_param“ aus der Anfrage in ein neues benutzerdefiniertes Anfrageobjekt kopiert:
<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>
Beispiel 2
Im folgenden Beispiel werden alle Abfrageparameter aus der Anfrage in ein neues benutzerdefiniertes Anfrageobjekt kopiert:
<AssignMessage name="copy-queryparams-2"> <Copy source="request"> <QueryParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Beispiel 3
Wenn mehrere Abfrageparameter mit demselben Namen vorhanden sind, verwenden Sie die folgende Syntax:
<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>
In diesem Beispiel werden „qp1“, „qp2“ und der zweite Wert von „qp3“ kopiert. Wenn „qp3“ nur einen Wert hat, wird dieser nicht kopiert.
Sie können <QueryParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verb: GET
- Nachrichtentyp: Anfrage
<ReasonPhrase>
(untergeordnet unter <Copy>
)
Bestimmt, ob die Begründung aus der Quellantwort auf die Zielantwort kopiert werden sollte. Dieses Element hat keine Auswirkungen auf eine Anfrage.
Bei "wahr" kopiert diese Richtlinie den ReasonPhrase
aus der Antwort, die im Attribut source
des <Copy>
-Elements angegeben wird, zur Antwort, die im Element <AssignTo>
angegebenen wird.
Standardwert | Falsch |
Erforderlich? | Optional |
Typ | Boolesch |
Übergeordnetes Element |
<Copy>
|
Untergeordnete Elemente | Keine |
Das <ReasonPhrase>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <ReasonPhrase>[false|true]</ReasonPhrase> </Copy> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird <ReasonPhrase>
auf "wahr" gesetzt, wodurch <Copy>
die Grundformulierung aus der Standardantwort in ein benutzerdefiniertes Antwortobjekt kopiert:
<AssignMessage name="copy-reasonphrase-1"> <Copy source="response"> <ReasonPhrase>true</ReasonPhrase> </Copy> <AssignTo createNew="trie" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
Sie können <ReasonPhrase>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Antwort
<StatusCode>
(untergeordnet unter <Copy>
)
Bestimmt, ob der Statuscode aus der Quellantwort auf die Zielantwort kopiert wird. Dieses Element hat keine Auswirkungen auf eine Anfrage.
Bei "wahr" kopiert diese Richtlinie den Statuscode aus der Antwortnachricht, die vom <Copy>
-Element des source
-Attributs an die Antwortnachricht des vom <AssignTo>
-Elements angegeben wird.
Standardwert | Falsch |
Erforderlich? | Optional |
Typ | Boolesch |
Übergeordnetes Element |
<Copy>
|
Untergeordnete Elemente | Keine |
Das <StatusCode>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <StatusCode>[false|true]</StatusCode> </Copy> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird für <StatusCode>
der Wert "wahr" festgelegt. Dadurch wird der Statuscode aus dem Standardantwortobjekt in ein neues, benutzerdefiniertes Antwortobjekt kopiert:
<AssignMessage name="copy-statuscode-1"> <Copy source="response"> <StatusCode>true</StatusCode> </Copy> <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
Sie können <StatusCode>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Antwort
Die häufige Verwendung von <StatusCode>
besteht darin, dass die Proxy-Antwort denselben Status wie die Antwort hat, die vom Ziel empfangen wird, wenn createNew
für <AssignTo>
verwendet wird. Attribut auf "wahr" gesetzt ist.
<Verb>
(untergeordnet unter <Copy>
)
Bestimmt, ob das HTTP-Verb aus der Quellanfrage in die Zielanfrage kopiert wird. Dieses Element hat keine Auswirkungen auf eine Antwort.
Bei "wahr" wird das Verb aus dem Attribut source
des Elements <Copy>
in die im Element <AssignTo>
angegebene Anfrage kopiert.
Standardwert | Falsch |
Erforderlich? | Optional |
Typ | Boolesch |
Übergeordnetes Element |
<Copy>
|
Untergeordnete Elemente | Keine |
Das <Verb>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Verb>[false|true]</Verb> </Copy> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird <Verb>
auf "wahr" gesetzt. Damit wird das Verb aus der Standardanfrage in eine neue, benutzerdefinierte Anfrage kopiert:
<AssignMessage name="copy-verb-1"> <Copy source="request"> <Verb>true</Verb> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Sie können <Verb>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Anfrage
<Version>
(untergeordnet unter <Copy>
)
Bestimmt, ob die HTTP-Version aus der Quellanfrage in die Zielanfrage kopiert wird. Dieses Element hat keine Auswirkungen auf eine Antwort.
Bei "wahr" wird die HTTP-Version aus dem Attribut source
des Elements <Copy>
in das Objekt kopiert, das durch das Element <AssignTo>
angegeben wird.
Standardwert | Falsch |
Erforderlich? | Optional |
Typ | Boolesch |
Übergeordnetes Element |
<Copy>
|
Untergeordnete Elemente | Keine |
Das <Version>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Version>[false|true]</Version> </Copy> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird für die Anfrage <Version>
auf "wahr" festgelegt, wodurch die Version vom Standardanfrageobjekt in ein neues, benutzerdefiniertes Anfrageobjekt kopiert wird:
<AssignMessage name="copy-version-1"> <Copy source="request"> <Version>true</Version> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Sie können <Version>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Anfrage
<DisplayName>
Wird zusätzlich zum Attribut name
verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen, natürlicher klingenden Namen zu versehen.
Das Element <DisplayName>
ist für alle Richtlinien gleich.
Standardwert | – |
Erforderlich/Optional? | Optional. Wenn Sie <DisplayName> weglassen, wird der Wert des Attributs name der Richtlinie verwendet. |
Typ | String |
Übergeordnetes Element | <PolicyElement> |
Untergeordnete Elemente | Keine |
Das <DisplayName>
-Element verwendet die folgende Syntax:
Syntax
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
Beispiel
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
Das <DisplayName>
-Element hat keine Attribute oder untergeordneten Elemente.
<IgnoreUnresolvedVariables>
Bestimmt, ob die Verarbeitung beendet wird, wenn eine nicht aufgelöste Variable erkannt wird.
Standardwert | Falsch |
Erforderlich? | Optional |
Typ | Boolesch |
Übergeordnetes Element |
<AssignMessage>
|
Untergeordnete Elemente | Keine |
Auf true
festlegen, um nicht aufgelöste Variablen zu ignorieren und die Verarbeitung fortzusetzen. Andernfalls false
. Der Standardwert ist false
.
<IgnoreUnresolvedVariables>
auf true
festzulegen unterscheidet sich von der Festlegung des continueOnError
von <AssignMessage>
auf true
, da es für das Festlegen und Abrufen der Werte von Variablen spezifisch ist. Wenn Sie continueOnError
auf true
setzen, ignoriert Edge alle Fehler, nicht nur Fehler, die bei der Verwendung von Variablen auftreten.
Das <IgnoreUnresolvedVariables>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird <IgnoreUnresolvedVariables>
auf "wahr" gesetzt:
<AssignMessage name="ignoreunresolvedvariables"> <Copy source="response"> ... <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </Copy> </AssignMessage>
<Remove>
Entfernt Header, Abfrageparameter, Formularparameter und/oder die Nachrichtennutzlast aus einer Nachricht. Die Nachricht kann eine Anfrage oder eine Antwort sein. Mit dem Element <AssignTo>
geben Sie an, auf welche Nachricht sich <Remove>
auswirkt.
Standardwert | – |
Erforderlich? | Optional |
Typ | Komplexer Typ |
Übergeordnetes Element |
<AssignMessage>
|
Untergeordnete Elemente |
<FormParams> <Headers> <Payload> <QueryParams> |
Ein häufiger Anwendungsfall für <Remove>
ist das Löschen eines Abfrageparameters, der vertrauliche Informationen aus dem eingehenden Anfrageobjekt enthält, damit sie nicht an den Back-End-Server weitergeleitet wird.
Das Element <Remove>
verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel wird der Nachrichtentext aus der Antwort entfernt:
<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>
Im Antwortablauf entfernt diese Richtlinie den Textkörper, sodass nur HTTP-Header an den Client zurückgegeben werden.
Beispiel 2
Im folgenden Beispiel werden alle Formularparameter und ein Abfrageparameter aus der eingehenden Anfrage entfernt:
<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>
(untergeordnet unter <Remove>
)
Entfernt die angegebenen Formularparameter aus der Anfrage. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <FormParam> -Elementen oder ein leeres Array |
Übergeordnetes Element |
<Remove>
|
Untergeordnete Elemente |
<FormParam> |
Das <FormParams>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel werden drei Formularparameter aus der Anfrage entfernt:
<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>
Beispiel 2
Im folgenden Beispiel werden alle Formularparameter aus der Anfrage entfernt:
<AssignMessage name="remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Beispiel 3
Wenn mehrere Formularparameter mit demselben Namen vorhanden sind, verwenden Sie die folgende Syntax:
<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>
In diesem Beispiel werden „f1“, „f2“ und der zweite Wert für „f3“ entfernt. Wenn „f3“ nur einen Wert hat, wird dieser nicht entfernt.
Sie können <FormParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Anfrage
Content-Type
: "application/x-www-form-urlencoded"
<Headers>
(untergeordnet unter <Remove>
)
Entfernt die angegebenen HTTP-Header aus der Anfrage oder Antwort, die durch das Element <AssignTo>
angegeben wird.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <Header> -Elementen oder ein leeres Array |
Übergeordnetes Element |
<Remove>
|
Untergeordnete Elemente |
<Header> |
Das <Headers>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel wird der Header user-agent
aus der Anfrage entfernt:
<AssignMessage name="remove-headers-1"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Beispiel 2
Im folgenden Beispiel werden alle Header aus der Anfrage entfernt:
<AssignMessage name="remove-headers-2"> <Remove> <Headers/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Beispiel 3
Wenn es mehrere Header mit demselben Namen gibt, verwenden Sie die folgende Syntax:
<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>
In diesem Beispiel werden „h1“, „h2“ und der zweite Wert von „h3“ aus der Anfrage entfernt. Wenn „h3“ nur einen Wert hat, wird er nicht entfernt.
<Payload>
(untergeordnet unter <Remove>
)
Bestimmt, ob <Remove>
die Nutzlast in der Anfrage oder Antwort löscht, die durch das Element <AssignTo>
angegeben wird. Auf „true“ gesetzt, um die Nutzlast zu löschen, andernfalls „false“. Der Standardwert lautet „false“.
Standardwert | Falsch |
Erforderlich? | Optional |
Typ | Boolesch |
Übergeordnetes Element |
<Remove>
|
Untergeordnete Elemente | Keine |
Das <Payload>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <Payload>[false|true]</Payload> </Remove> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird <Payload>
auf "wahr" gesetzt, damit die Nutzlast der Anfrage gelöscht wird:
<AssignMessage name="remove-payload-1"> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(untergeordnet unter <Remove>
)
Entfernt die angegebenen Abfrageparameter aus der Anfrage. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <QueryParam> -Elementen oder ein leeres Array |
Übergeordnetes Element |
<Remove>
|
Untergeordnete Elemente |
<QueryParam> |
Das <QueryParams>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Im folgenden Beispiel wird ein einzelner Abfrageparameter aus der Anfrage entfernt:
<AssignMessage name="remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Beispiel 2
Im folgenden Beispiel werden alle Suchparameter aus der Anfrage entfernt:
<AssignMessage name="remove-queryparams-2"> <Remove> <QueryParams/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Beispiel 3
Wenn mehrere Abfrageparameter mit demselben Namen vorhanden sind, verwenden Sie die folgende Syntax:
<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>
In diesem Beispiel werden „qp1“, „qp2“ und der zweite Wert von „qp3“ aus der Anfrage entfernt. Wenn „qp3“ nur einen Wert hat, wird er nicht entfernt.
Beispiel 4
Im folgenden Beispiel wird der Abfrageparameter apikey
aus der Anfrage entfernt:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Sie können <QueryParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verb: GET
- Nachrichtentyp: Anfrage
<Set>
Legt Informationen in der Anfrage oder Antwortnachricht fest, die durch das Element <AssignTo>
angegeben werden. <Set>
überschreibt Header oder Parameter, die in der ursprünglichen Nachricht bereits vorhanden sind. Wenn Sie einen neuen Header oder Parameter erstellen möchten, verwenden Sie stattdessen das Element <Add>
.
Standardwert | – |
Erforderlich? | Optional |
Typ | Komplexer Typ |
Übergeordnetes Element |
<AssignMessage>
|
Untergeordnete Elemente |
<FormParams> <Headers> <Payload> <Path> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
Das <Set>
-Element verwendet die folgende Syntax:
Syntax
<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>
Beispiel 1
Das folgende Beispiel zeigt das 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>
(untergeordnet unter <Set>
)
Überschreibt vorhandene Formularparameter in einer Anfrage und ersetzt sie durch die neuen Werte, die Sie mit diesem Element angeben. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <FormParam> -Elementen |
Übergeordnetes Element |
<Set>
|
Untergeordnete Elemente |
<FormParam> |
Das <FormParams>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Set> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird der Formularparameter „myparam“ auf den Wert der Variable request.header.myparam
in einer neuen benutzerdefinierten Anfrage festgelegt:
<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>
Sie können <FormParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verb: POST
- Nachrichtentyp: Anfrage
Wenn Sie leere Formularparameter in der Richtlinie definieren (<Add><FormParams/></Add>
), fügt die Richtlinie keine Formularparameter hinzu. Dies entspricht dem Weglassen von <FormParams>
.
<Set>
ändert die Content-Type
der Nachricht in „application/x-www-form-urlencoded“, bevor sie an den Zielendpunkt gesendet wird.
<Headers>
(untergeordnet unter <Set>
)
Überschreibt vorhandene HTTP-Header in der Anfrage oder Antwort, die durch das Element <AssignTo>
angegeben werden.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <Header> -Elementen |
Übergeordnetes Element |
<Set>
|
Untergeordnete Elemente |
<Header> |
Das <Headers>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Set> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird der Header user-agent
auf den Wert der Variable request.header.user-agent
festgelegt:
<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>
Wenn Sie leere Header in Ihrer Richtlinie (<Add><Headers/></Add>
) definieren, fügt die Richtlinie keine Header hinzu. Dies entspricht dem Weglassen von <Headers>
.
<Path>
(untergeordnet unter <Set>
)
<Payload>
(untergeordnet unter <Set>
)
Definiert den Nachrichtentext für eine Anfrage oder Antwort, der durch das Element <AssignTo>
angegeben wird. Die Nutzlast kann ein beliebiger gültiger Inhaltstyp sein, z. B. nur Text, JSON oder XML.
Standardwert | Leerer String |
Erforderlich? | Optional |
Typ | String |
Übergeordnetes Element |
<Set>
|
Untergeordnete Elemente | Keine |
Das <Payload>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> </Set> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird eine Nur-Text-Nutzlast festgelegt:
<AssignMessage name="set-payload-1"> <Set> <Payload contentType="text/plain">42</Payload> </Set> </AssignMessage>
Beispiel 2
Im folgenden Beispiel wird eine JSON-Nutzlast festgelegt:
<AssignMessage name="set-payload-2"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set> </AssignMessage>
Beispiel 3
Im folgenden Beispiel werden Variablenwerte in die Nutzlast eingefügt, indem Variablennamen in geschweifte Klammern eingeschlossen werden:
<AssignMessage name="set-payload-3"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set> </AssignMessage>
In älteren Apigee Edge-Versionen, z. B. vor der Cloud-Version 16.08.17, konnten Sie keine geschweiften Klammern verwenden, um Variablenverweise in JSON-Nutzlasten zu kennzeichnen. In diesen Versionen mussten Sie die Attribute variablePrefix
und variableSuffix
verwenden, um Trennzeichen anzugeben und sie zum Umschließen von Variablennamen zu verwenden. Beispiel:
<AssignMessage name="set-payload-3b"> <Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set> </AssignMessage>
Diese ältere Syntax funktioniert noch.
Beispiel 4
Der Inhalt von <Payload>
wird als Nachrichtenvorlage behandelt. Das bedeutet, dass die AssignMessage-Richtlinie Variablen in geschweiften Klammern durch den Wert der referenzierten Variablen während der Laufzeit ersetzt.
Im folgenden Beispiel wird die Syntax mit geschweiften Klammern verwendet, um einen Teil der Nutzlast auf einen variablen Wert zu setzen:
<AssignMessage name="set-payload-4"> <Set> <Payload contentType="text/xml"> <root> <e1>sunday</e1> <e2>funday</e2> <e3>{var1}</e3> </root> </Payload> </Set> </AssignMessage>
In der folgenden Tabelle werden die Attribute von <Payload>
beschrieben:
Attribut | Beschreibung | Präsenz | Typ |
---|---|---|---|
contentType |
Wenn angegeben, wird der Wert von |
Optional | String |
variablePrefix |
Gibt optional das führende Trennzeichen für eine Ablaufvariable an. Die Standardeinstellung ist „}“. Weitere Informationen finden Sie unter Referenz für Ablaufvariablen. | Optional | Char |
variableSuffix |
Gibt optional das nachgestellte Trennzeichen für eine Ablaufvariable an. Die Standardeinstellung ist "}". Weitere Informationen finden Sie unter Referenz für Ablaufvariablen. | Optional | Char |
<QueryParams>
(untergeordnet unter <Set>
)
Überschreibt vorhandene Abfrageparameter in der Anfrage mit neuen Werten. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | Array von <QueryParam> -Elementen |
Übergeordnetes Element |
<Set>
|
Untergeordnete Elemente |
<QueryParam> |
Das <QueryParams>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Set> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird der Abfrageparameter "Adresse" auf den Wert der Variable request.header.address
festgelegt:
<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </AssignMessage>
Sie können <QueryParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verb: GET
- Nachrichtentyp: Anfrage
Wenn Sie leere Abfrageparameter in Ihrer Richtlinie (<Set><QueryParams/></Set>
) definieren, legt die Richtlinie keine Abfrageparameter fest. Dies entspricht dem Weglassen von <QueryParams>
.
<ReasonPhrase>
(untergeordnet unter <Set>
)
Legt die Grundphrase für die Antwort fest. Dies wird normalerweise zur Fehlerbehebung in Kombination mit <StatusCode>
durchgeführt. Dieses Element hat keine Auswirkungen auf eine Anfrage.
Standardwert | – |
Erforderlich? | Optional |
Typ | String |
Übergeordnetes Element |
<Set>
|
Untergeordnete Elemente | Keine |
Das <ReasonPhrase>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> </Set> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird ein einfacher Grundsatz definiert:
<AssignMessage name="set-reasonphrase-1"> <Set> <ReasonPhrase>Bad medicine</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Beispiel 2
Der Inhalt von <ReasonPhrase>
wird als Nachrichtenvorlage behandelt. Das bedeutet, dass ein Variablenname in geschweiften Klammern zur Laufzeit durch den Wert der referenzierten Variable ersetzt wird, wie das folgende Beispiel zeigt:
<AssignMessage name="set-reasonphrase-2"> <Set> <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Sie können <ReasonPhrase>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Antwort
<StatusCode>
(untergeordnet unter <Set>
)
Legt den Statuscode der Antwort fest. Dieses Element hat keine Auswirkungen auf eine Anfrage.
Standardwert | "FAILED" (wenn das Attribut createNew von <AssignTo> auf "wahr" gesetzt ist) |
Erforderlich? | Optional |
Typ | String oder variable |
Übergeordnetes Element |
<Set>
|
Untergeordnete Elemente | Keine |
Das <StatusCode>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <StatusCode>HTTP_status_code or {variable}</StatusCode> </Set> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird ein einfacher Statuscode festgelegt:
<AssignMessage name="set-statuscode-1"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Beispiel 2
Der Inhalt von <StatusCode>
wird als Nachrichtenvorlage behandelt. Das bedeutet, dass ein Variablenname in geschweiften Klammern zur Laufzeit durch den Wert der referenzierten Variable ersetzt wird, wie das folgende Beispiel zeigt:
<AssignMessage name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Sie können <StatusCode>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Antwort
<Verb>
(untergeordnet unter <Set>
)
Legt das HTTP-Verb für die Anfrage fest. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | String oder variable |
Übergeordnetes Element |
<Set>
|
Untergeordnete Elemente | Keine |
Das <Verb>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird ein einfaches Verb für die Anfrage festgelegt:
<AssignMessage name="set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Beispiel 2
Der Inhalt von <Verb>
wird als Nachrichtenvorlage behandelt. Das bedeutet, dass ein Variablenname, der in geschweifte Klammern eingeschlossen ist, zur Laufzeit durch den Wert der referenzierten Variable ersetzt wird.
Im folgenden Beispiel wird eine Variable verwendet, um ein Verb zu einzutragen:
<AssignMessage name="set-verb-2"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Sie können <Verb>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Anfrage
<Version>
(untergeordnet unter <Set>
)
Legt die HTTP-Version für eine Anfrage fest. Dieses Element hat keine Auswirkungen auf eine Antwort.
Standardwert | – |
Erforderlich? | Optional |
Typ | String oder variable |
Übergeordnetes Element |
<Set>
|
Untergeordnete Elemente | Keine |
Das <Version>
-Element verwendet die folgende Syntax:
Syntax
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Beispiel 1
Im folgenden Beispiel wird die Versionsnummer auf „1.1“ festgelegt:
<AssignMessage name="set-version-1"> <Set> <Version>1.1</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Beispiel 2
Im Folgenden wird eine Variable in geschweiften Klammern verwendet, um die Versionsnummer festzulegen:
<AssignMessage name="set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Der Inhalt von <Version>
wird als Nachrichtenvorlage behandelt. Das bedeutet, dass ein Variablenname, der in geschweifte Klammern eingeschlossen ist, zur Laufzeit durch den Wert der referenzierten Variable ersetzt wird.
Sie können <Version>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- Nachrichtentyp: Anfrage
Benutzerdefinierte Anfragenachrichten erstellen
Sie können die Richtlinie „Nachricht zuweisen“ verwenden, um eine benutzerdefinierte Anfragenachricht zu erstellen. Nachdem Sie eine benutzerdefinierte Anfrage erstellt haben, können Sie diese so verwenden:
- Auf Variablen in anderen Richtlinien zugreifen
- An einen externen Dienst weiterleiten
Verwenden Sie in der AssignMessage-Richtlinie das Element <AssignTo>
, um eine benutzerdefinierte Anfragenachricht zu erstellen. Legen Sie createNew
auf „true“ fest und geben Sie den Namen der neuen Nachricht im Text des Elements an, wie im folgenden Beispiel gezeigt:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Standardmäßig führt Edge mit der benutzerdefinierten Anfragenachricht nichts aus. Nach dem Erstellen durchläuft Edge den Ablauf mit der ursprünglichen Anfrage. Um die benutzerdefinierte Anfrage zu verwenden, fügen Sie Ihrem Proxy eine Richtlinie wie die ServiceCallout-Richtlinie hinzu, die die benutzerdefinierte Anfrage an einen externen Dienst weiterleiten kann.
In den folgenden Beispielen werden benutzerdefinierte Anfragenachrichten erstellt:
Beispiel 1
Im folgenden Beispiel wird ein benutzerdefiniertes Anfrageobjekt mit AssignMessage erstellt:
<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>
Dieses Beispiel:
- Erstellt ein neues Anfragenachrichtenobjekt mit dem Namen „MyCustomRequest“.
- Bei MyCustomRequest gilt diese Richtlinie:
- Kopiert den Wert des HTTP-Headers
user-agent
aus der eingehenden Anfrage in die neue Nachricht. Da<Copy>
einen absoluten Verweis auf die Ablaufvariablenuser-agent
verwendet, müssen Sie das Attributsource
nicht auf<Copy>
setzen. - Legt den Abfrageparameter
address
in der benutzerdefinierten Nachricht auf den Wert des Abfrageparametersaddy
der eingehenden Anfrage fest. - Legt das HTTP-Verb auf
GET
fest.
- Kopiert den Wert des HTTP-Headers
- Legt
<IgnoreUnresolvedVariables>
auf "falsch" fest. Wenn<IgnoreUnresolvedVariables>
"falsch" ist und eine der Variablen, die der Richtlinie hinzufügen möchte, nicht existiert, beendet Edge die Verarbeitung im API-Ablauf.
Beispiel 2
Das folgende Beispiel zeigt, wie ein benutzerdefiniertes Anfrageobjekt mit AssignMessage erstellt wird:
<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>
In diesem Beispiel wird eine neue benutzerdefinierte Anfrage namens „partner.request“ erstellt. Anschließend werden <Verb>
und <Payload>
für die neue Anfrage festgelegt.
Sie können auch in einer anderen AssignMessage-Richtlinie, die später im Ablauf auf die Nachricht zugreift, auf eine benutzerdefinierte Anfragenachricht zugreifen. Im folgenden Beispiel wird der Wert des user-agent
-Headers der benutzerdefinierten Anfragenachricht abgerufen:
<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>
Videos
In den folgenden Videos erfahren Sie mehr über die AssignMessage-Richtlinie.
Video | Beschreibung |
---|---|
Warum AssignMessage-Richtlinie? | Erfahren Sie mehr über die Vorteile der Verwendung der AssignMessage-Richtlinie, um die API-Anfrage oder -Antwort zu ändern, ohne den Back-End-Code zu ändern. |
API-Elemente mithilfe der Richtlinie AssignMessage kopieren | Kopieren Sie Elemente aus einer API-Anfrage oder -Antwort und erstellen Sie ein neues Anfrage- oder Antwortobjekt mithilfe der Richtlinie AssignMessage. |
API-Elemente mithilfe der Richtlinie AssignMessage entfernen | Entfernen Sie API-Elemente und ändern Sie die API mithilfe der Richtlinie AssignMessage, bevor sie das Ziel-Back-End erreicht. |
API-Elemente mit der Richtlinie AssignMessage hinzufügen und festlegen | API-Anfrage oder -Antwort ändern, indem Sie Abfrageparameter, Header, Formularparameter oder Nutzlasten mithilfe der Richtlinie AssignMessage hinzufügen. |
Benutzerdefinierte Variablen mithilfe der Richtlinie AssignMessage erstellen | Legen Sie benutzerdefinierte Ablaufvariablen mit der Richtlinie AssignMessage fest und nutzen Sie die Variablen in anderen Richtlinien im API-Proxy. |
Erstellen Sie neue Anfrage- oder Antwortobjekte mit der Richtlinie AssignMessage | Erstellen Sie neue API-Anfrage- oder Antwortobjekte mit der Richtlinie AssignMessage zur API-Laufzeit. |
Erstellen Sie eine simulierte API mit der Richtlinie AssignMessage | Erstellen Sie eine einfache simulierte REST API, indem Sie die Antwortrichtlinie dem Antwortablauf hinzufügen. |
Die Nutzlast mithilfe der Richtlinie AssignMessage festlegen oder ändern | Konvertieren Sie die REST-Anfrage in eine SOAP-Anfrage, indem Sie die SOAP-Nutzlast mit der Richtlinie AssignMessage zur API-Laufzeit festlegen. |
Fehlercodes
In diesem Abschnitt werden die zurückgegebenen Fehlercodes und Fehlermeldungen beschrieben, die von Edge festgelegt werden, wenn die Richtlinie einen Fehler auslöst. Diese Informationen sind wichtig, wenn Sie Fehlerregeln zur Verarbeitung von Fehlern entwickeln. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.
Laufzeitfehler
Diese Fehler können bei Ausführung der Richtlinie auftreten.
Fehlercode | HTTP-Status | Ursache | Beheben |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | Die Richtlinie konnte keine Variable festlegen. Sehen Sie sich den Fehlerstring für den Namen der nicht aufgelösten Variable an. | |
steps.assignmessage.VariableOfNonMsgType |
500 |
Dieser Fehler tritt auf, wenn für das Attribut Nachrichtentypvariablen stellen ganze HTTP-Anfragen und -Antworten dar. Die integrierten Edge-Ablaufvariablen |
build |
steps.assignmessage.UnresolvedVariable |
500 |
Dieser Fehler tritt bei einer Variablen auf, die in der Richtlinie "Nachricht zuweisen" angegeben ist, wenn die Variable
|
build |
Bereitstellungsfehler
Diese Fehler können auftreten, wenn Sie einen Proxy bereitstellen, der diese Richtlinie enthält.
Fehlername | Ursache | Beheben |
---|---|---|
InvalidIndex |
Wenn der in den Elementen <Copy> und/oder <Remove> der Richtlinie "Nachricht zuweisen" angegebene Wert 0 oder eine negative Zahl ist, schlägt die Bereitstellung des API-Proxys fehl. |
build |
InvalidVariableName |
Wenn das untergeordnete Element <Name> leer ist oder nicht im Element <AssignVariable> angegeben ist, schlägt die Bereitstellung des API-Proxys fehl, da kein gültiger Variablenname vorhanden ist, dem ein Wert zugewiesen werden soll. Ein gültiger Variablenname ist erforderlich.
|
build |
InvalidPayload |
Eine in der Richtlinie angegebene Nutzlast ist ungültig. |
Fehlervariablen
Diese Variablen werden festgelegt, wenn diese Richtlinie zur Laufzeit einen Fehler auslöst. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen.
Variablen | Wo | Beispiel |
---|---|---|
fault.name="fault_name" |
fault_name ist der Name des Fehlers, der in der obigen Tabelle Laufzeitfehler aufgeführt ist. Der Fehlername ist der letzte Teil des Fehlercodes. | fault.name Matches "UnresolvedVariable" |
assignmessage.policy_name.failed |
policy_name ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. | assignmessage.AM-SetResponse.failed = true |
Beispiel für eine Fehlerantwort
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
Beispiel für eine Fehlerregel
<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>
Schemas
Jeder Richtlinientyp wird durch ein XML-Schema (.xsd
) definiert. Zu Referenzzwecken sind Richtlinienschemas auf GitHub verfügbar.
Weitere Informationen
Arbeitsproben der Richtlinie „AssignMessage“ finden Sie in den API-Plattform-Beispielen.
Ein fortgeschrittenes Beispiel für das Überschreiben von target.url
aus dem ProxyEndpoint finden Sie in diesem Apigee Community-Artikel.
Um den „Pfad festlegen“ in Aktion in einer ServiceCallout-Richtlinie anzuwenden, sehen Sie sich dieses Beispiel in den Apigee GitHub-Beispielen an. Klonen Sie einfach das Repository und folgen Sie der Anleitung in diesem Thema. Im Beispiel wird mithilfe der AssignMessage-Richtlinie ein Anfragepfad festgelegt. Anschließend wird eine ServiceCallout-Richtlinie verwendet, um die Anfrage an einen externen Dienst zu senden.