Was
Die HTTPModifier-Richtlinie kann eine vorhandene Anfrage- oder Antwortnachricht ändern.
Mit der Richtlinie können Sie die folgenden Aktionen für diese Nachrichten ausführen:
- Einer Nachricht neue Formularparameter, Header oder Abfrageparameter hinzufügen
- Header, Abfrageparameter und Formularparameter aus einer Nachricht entfernen
- Den Wert vorhandener Eigenschaften in einer Nachricht festlegen
Mit HTTPModifier können Sie Attribute der Anfrage oder Antwort hinzufügen, ändern oder entfernen. Sie können HTTPModifier auch verwenden, um eine benutzerdefinierte Anfrage oder Antwort zu erstellen und sie an ein alternatives Ziel weiterzuleiten, wie unter Benutzerdefinierte Anfragenachrichten erstellen beschrieben.
Die HTTPModifier-Richtlinie kann Ablaufvariablen mit den folgenden untergeordneten Elementen erstellen:
Die Reihenfolge, in der Sie <Add>
-, <Set>
- und <Remove>
--Elemente organisieren, ist wichtig. Die Richtlinie führt diese Aktionen in der Reihenfolge aus, in der sie in der Richtlinienkonfiguration angezeigt werden. Wenn Sie alle Header entfernen und dann einen bestimmten Header festlegen müssen, sollten Sie das Element <Remove>
vor dem Element <Set>
einfügen.
Diese Richtlinie ist eine Standardrichtlinie, die in jeder Umgebung bereitgestellt werden kann. Nicht alle Nutzer müssen Richtlinien- und Umgebungstypen kennen. Informationen zu Richtlinientypen und zur Verfügbarkeit bei jedem Umgebungstyp finden Sie unter Richtlinientypen.
Element <HTTPModifier>
Definiert eine HTTPModifier-Richtlinie.
Standardwert | Siehe Standardrichtlinie Tab unten |
Erforderlich? | Erforderlich |
Typ | Komplexes Objekt |
Übergeordnetes Element | – |
Untergeordnete Elemente |
<Add> <AssignTo> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
Das <HTTPModifier>
-Element verwendet die folgende Syntax:
Syntax
Das <HTTPModifier>
-Element verwendet die folgende Syntax:
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- All HTTPModifier 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> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <!-- Can also be an empty array to remove all QueryParams (<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> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Standardrichtlinie
Das folgende Beispiel zeigt die Standardeinstellungen, wenn Sie Ihrem Ablauf in der Apigee-UI eine HTTPModifier-Richtlinie hinzufügen:
<HTTPModifier continueOnError="false" enabled="true" name="http-modifier-default"> <DisplayName>HTTP Modifier-1</DisplayName> <Properties/> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </HTTPModifier>
Wenn Sie eine neue HTTPModifier-Richtlinie in die Apigee-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 Vorgang zum Hinzufügen ausführen möchten, verwenden Sie das Element <Add>
und entfernen Sie <Remove>
und andere untergeordnete Elemente aus der Richtlinie, damit sie besser lesbar ist.
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 |
false | Optional | Legen Sie false fest, um einen Fehler zurückzugeben, wenn eine Richtlinie fehlschlägt. Dies ist für die meisten Richtlinien das erwartete Verhalten. Legen Sie true fest, damit die Ablaufausführung auch nach dem Fehlschlagen einer Richtlinie fortgesetzt wird. Weitere Informationen:
|
enabled |
wahr | Optional | Setzen Sie den Wert auf true , um die Richtlinie zu erzwingen. Legen Sie false fest, um die Richtlinie zu deaktivieren. Die Richtlinie wird nicht durchgesetzt, selbst wenn sie mit einem Ablauf verknüpft ist. |
async |
false | Verworfen | Dieses Attribut wurde verworfen. |
Die folgende Tabelle enthält eine allgemeine Beschreibung der untergeordneten Elemente von <HTTPModifier>
:
Untergeordnetes Element | Erforderlich? | Beschreibung |
---|---|---|
Häufige Vorgänge | ||
<Add> |
Optional | Fügt dem Nachrichtenobjekt, das im Element <AssignTo> angegeben ist, Informationen hinzu.
Verwenden Sie zum Überschreiben vorhandener Header oder Parameter das |
<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 HTTPModifier-Richtlinie angewendet wird. Das kann die Standardanfrage oder -antwort oder eine neue, benutzerdefinierte Nachricht sein. |
<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 Möglichkeiten, wie Sie die HTTPModifier-Richtlinie verwenden können:
1: Header hinzufügen
Im folgenden Beispiel wird ein Header mit dem Element <Add>
in die Anfrage eingefügt. Die Variable "VerifyAPIKey" in diesem Beispiel wird von der VerifyAPIKey-Richtlinie generiert:
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
2: Antwort ändern
Im folgenden Beispiel wird ein vorhandenes Antwortobjekt durch Hinzufügen eines Headers geändert:
<HTTPModifier name="HM-modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo>response</AssignTo> </HTTPModifier>
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 response
als Variablenname im Element <AssignTo>
angegeben ist, ändert diese Richtlinie das Antwortobjekt, das ursprünglich mit den vom Zielserver zurückgegebenen Daten festgelegt wurde.
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 von dieser HTTPModifier-Richtlinie geänderte Antwortnachricht einen HTTP-Header, der 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.
3: Abfrageparameter entfernen
Im folgenden Beispiel wird der Abfrageparameter apikey
aus der Anfrage entfernt:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
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.
Verweis auf untergeordnetes Element
In diesem Abschnitt werden die untergeordneten Elemente von <HTTPModifier>
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. Beachten Sie, dass <Set>
ebenfalls diese Funktion bietet. Zum Ändern der Werte von vorhandenen Attributen verwenden Sie das Element <Set>
.
Standardwert | – |
Erforderlich? | Optional |
Typ | Komplexer Typ |
Übergeordnetes Element |
<HTTPModifier>
|
Untergeordnete Elemente |
<FormParams> <Headers> <QueryParams> |
Das <Add>
-Element verwendet die folgende Syntax:
Syntax
<HTTPModifier 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> </HTTPModifier>
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:
<HTTPModifier name="HM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 2
Im folgenden Beispiel wird mit dem Element <Headers>
der Anfrage ein partner-id
-Header hinzugefügt, der an den Zielendpunkt gesendet wird:
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 3
Im folgenden Beispiel wird mit dem Element <QueryParams>
ein einzelner Abfrageparameter mit einem statischen Wert zur Anfrage hinzugefügt:
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
In diesem Beispiel wird <Add>
im Anfragefluss verwendet. Wenn Sie die Ergebnisse in einem Tool wie dem Debug-Tool betrachten, wird die Anfrage an https://example-target.com/get
zu https://example-target.com/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
<HTTPModifier 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> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel werden ein einzelner Formularparameter (answer
) und ein statischer Wert (42
) der Anfrage hinzugefügt:
<HTTPModifier name="HM-add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 2
Im folgenden Beispiel wird der Wert des Abfrageparameters name
abgerufen und als Formularparameter in die Anfrage eingefügt. Anschließend wird der Abfrageparameter entfernt:
<HTTPModifier name="HM-Swap-QueryParam-to-FormParams"> <Add> <FormParam name="name">{request.queryparam.name} </Add> <Remove> <QueryParam name="name"/> </Remove> </HTTPModifier>
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:
<HTTPModifier name="HM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
In diesem Beispiel werden die Abfragestringparameter aus der ursprünglichen Anfrage abgerufen und als Formularparameter mit unterschiedlichen Namen hinzugefügt. Anschließend werden die ursprünglichen Abfrageparameter entfernt. Apigee sendet die geänderte Anfrage an den Zielendpunkt.
Verwenden Sie das Debug-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:
username=nick&zip_code=90210&default_language=en
Sie können <FormParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verben:
GET
,POST
- Nachrichtentyp: Anfrage
- Eine (oder beide) der folgenden:
- Formulardaten: Legen Sie einen Wert oder
""
(den leeren String) fest. Beispiel: Beicurl
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
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 Apigee den Content-Type
-Header 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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Add> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird der Anfragenachricht ein partner-id
-Header hinzugefügt und diesem Header der Wert der Ablaufvariablen verifyapikey.VAK-1.developer.app.partner-id
zugewiesen.
<HTTPModifier name="HM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
<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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Add> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Add> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird der Abfrageparameter myParam
zur Anfrage hinzugefügt und dieser der Wert 42
zugewiesen:
<HTTPModifier name="HM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </HTTPModifier>
Sie können <QueryParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verben:
GET
,POST
- 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 HTTPModifier-Richtlinie 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 HTTPModifier-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 |
<HTTPModifier>
|
Untergeordnete Elemente | Keine |
Wenn Sie <AssignTo>
nicht angeben oder wenn Sie das Element <AssignTo>
angeben, aber keinen Textwert für das Element angeben, wird die Richtlinie auf die Standardanfrage oder -antwort angewendet, basierend auf dem Ort, an dem 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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird keine Nachricht im Text von <AssignTo>
angegeben. Dies bedeutet, dass die Richtlinie entweder auf die Nachricht request
oder auf die Nachricht response
reagiert, je nachdem, wo die Richtlinie ausgeführt wird.
<HTTPModifier name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/>-- no-op --> ... </HTTPModifier>
Wenn Sie createNew="false"
angeben und keinen Nachrichtennamen angeben, sind die anderen Attribute von <AssignTo>
nicht relevant. In diesem Fall bietet es sich an, das Element <AssignTo>
komplett wegzulassen.
Beispiel 2
Im folgenden Beispiel wird ein neues Anfrageobjekt erstellt, das das vorhandene Objekt überschreibt:
<HTTPModifier name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> ... </HTTPModifier>
Wenn Sie eine neue Anfrage oder ein neues Antwortobjekt erstellen, werden die anderen Elemente der HTTPModifier-Richtlinie (wie <Add>
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:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Wenn Sie eine neue Anfrage oder ein neues Antwortobjekt erstellen, werden die anderen Elemente der HTTPModifier-Richtlinie (wie <Add>
und <Set>
) für dieses neue Anfrageobjekt ausgeführt.
Sie können später in anderen Richtlinien des Ablaufs auf das neue Anfrageobjekt nach Name 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 Bei
Wenn
|
Optional | Boolesch |
transport |
Gibt den Transporttyp für den Anfrage- oder Antwortnachrichtentyp an. Der Standardwert ist |
Optional | String |
type |
Gibt den Typ der neuen Nachricht an, wenn createNew true ist. Gültige Werte sind request und response .
Der Standardwert ist |
Optional | String |
<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. 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 |
<HTTPModifier>
|
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 <HTTPModifier>
auf true
, da es für das Festlegen und Abrufen der Werte von Variablen spezifisch ist. Wenn Sie continueOnError
auf true
setzen, ignoriert Apigee alle Fehler, nicht nur Fehler, die bei der Verwendung von Variablen auftreten.
Das <IgnoreUnresolvedVariables>
-Element verwendet die folgende Syntax:
Syntax
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird für <IgnoreUnresolvedVariables>
der Wert true
festgelegt:
<HTTPModifier name="HM-Set-Headers"> <Set> <Headers> <Header name='new-header'>{possibly-defined-variable}<Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </HTTPModifier>
Da <IgnoreUnresolvedVariables>
auf true
gesetzt ist, gibt diese Richtlinie keinen Fehler aus, wenn die Variable possibly-defined-variable
nicht definiert ist.
<Remove>
Entfernt Header, Abfrageparameter oder Formularparameter aus einer Nachricht. Bei einem leeren Tag werden alle entsprechenden Parameter entfernt, einschließlich Headern, Formularparametern und Abfrageparametern.
Die betroffene 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 |
<HTTPModifier>
|
Untergeordnete Elemente |
<FormParams> <Headers> <QueryParams> |
Ein häufiger Anwendungsfall für <Remove>
ist das Löschen eines Abfrageparameters oder Headers, der vertrauliche Informationen aus dem eingehenden Anfrageobjekt enthält, damit er nicht an den Backend-Server weitergeleitet wird.
Das <Remove>
-Element verwendet die folgende Syntax:
Syntax
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) --> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Remove> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel werden alle Formularparameter und ein Abfrageparameter aus dem request
-Objekt entfernt:
<HTTPModifier name="HM-remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 2
Im folgenden Beispiel wird alles aus einem Nachrichtenobjekt entfernt:
<HTTPModifier name="HM-remove-3"> <Remove/> <AssignTo>request</AssignTo> </HTTPModifier>
Normalerweise würden Sie dies nur tun, wenn Sie das Element <Set>
verwenden, um einige Ersatzwerte in der Nachricht festzulegen.
<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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all FormParams (<FormParams/>) --> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> </Remove> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel werden drei Formularparameter aus der Anfrage entfernt:
<HTTPModifier name="HM-remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 2
Im folgenden Beispiel werden alle Formularparameter aus der Anfrage entfernt:
<HTTPModifier name="HM-remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 3
Wenn mehrere Formularparameter mit demselben Namen vorhanden sind, verwenden Sie die folgende Syntax:
<HTTPModifier name="HM-remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
In diesem Beispiel werden f1
, f2
und der zweite Wert von 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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all Headers (<Headers/>) --> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Remove> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird der Header user-agent
aus der Anfrage entfernt:
<HTTPModifier name="HM-remove-one-header"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 2
Im folgenden Beispiel werden alle Header aus der Anfrage entfernt:
<HTTPModifier name="HM-remove-all-headers"> <Remove> <Headers/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 3
Wenn es mehrere Header mit demselben Namen gibt, verwenden Sie die folgende Syntax:
<HTTPModifier name="HM-remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
In diesem Beispiel werden h1
, h2
und der zweite Wert von h3
aus der Anfrage entfernt. Wenn h3
nur einen Wert hat, wird dieser nicht entfernt.
<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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <!-- Can also be empty to remove everything from the message (<Remove/>) --> <Remove> <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) --> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Remove> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird ein einzelner Abfrageparameter aus der Anfrage entfernt:
<HTTPModifier name="HM-remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 2
Im folgenden Beispiel werden alle Suchparameter aus der Anfrage entfernt:
<HTTPModifier name="HM-remove-queryparams-2"> &tl;Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Beispiel 3
Wenn mehrere Abfrageparameter mit demselben Namen vorhanden sind, verwenden Sie die folgende Syntax:
<HTTPModifier name="HM-remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
In diesem Beispiel werden qp1
, qp2
und der zweite Wert von qp3
aus der Anfrage entfernt. Wenn qp3
nur einen Wert hat, wird dieser nicht entfernt.
Beispiel 4
Im folgenden Beispiel wird der Abfrageparameter apikey
aus der Anfrage entfernt:
<HTTPModifier name="HM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </HTTPModifier>
Sie können <QueryParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verben:
GET
,POST
- Nachrichtentyp: Anfrage
<Set>
Legt Informationen in der Anfrage oder Antwortnachricht fest, die durch das Element <AssignTo>
angegeben werden. <Set>
überschreibt Header oder Abfrage- bzw. Formularparameter, die bereits in der ursprünglichen Nachricht vorhanden sind, oder fügt neue hinzu, wenn dies nicht der Fall ist.
Header sowie Abfrage- und Formularparameter in einer HTTP-Nachricht können mehrere Werte enthalten. Verwenden Sie stattdessen das Element <Add>
, um zusätzliche Werte für einen Header oder Parameter hinzuzufügen.
Standardwert | – |
Erforderlich? | Optional |
Typ | Komplexer Typ |
Übergeordnetes Element |
<HTTPModifier>
|
Untergeordnete Elemente |
<FormParams> <Headers> <Path> <QueryParams> <StatusCode> <Verb> <Version> |
Das <Set>
-Element verwendet die folgende Syntax:
Syntax
<HTTPModifier 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> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Beispiel
Im folgenden Beispiel wird ein bestimmter Header festgelegt. Wenn diese Richtlinie im Anfrageablauf angehängt wird, kann das vorgelagerte System einen zusätzlichen Header empfangen, der in der ursprünglichen eingehenden Anfrage nicht enthalten war.
<HTTPModifier name="HM-Set-Header"> <Set> <Headers> <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header> </Headers> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
<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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <FormParams> <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam> ... </FormParams> </Set> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird der Formularparameter myparam
auf den Wert der Variable request.header.myparam
in einer neuen benutzerdefinierten Anfrage festgelegt:
<HTTPModifier name="HM-set-formparams-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> </Set> <AssignTo createNew="true" transport="http" type="request>>MyCustomRequest</AssignTo> </HTTPModifier>
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 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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Headers> <Header name="HEADER_NAME">HEADER_VALUE</Header> ... </Headers> </Set> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird der Header x-ratelimit-remaining
auf den Wert der Variable ratelimit.Quota-1.available.count
festgelegt:
<HTTPModifier name="HM-Set-RateLimit-Header"> <Set> <Headers> <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header> </Headers> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
Wenn Sie leere Header in Ihrer Richtlinie (<Set><Headers/></Set>
) definieren, legt die Richtlinie keine Header fest. Dies hat den gleichen Effekt wie das Weglassen von <Headers>
.
<Path>
(untergeordnet unter <Set>
)
<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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <QueryParams> <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam> ... </QueryParams> </Set> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird für den Abfrageparameter address
der Wert der Variablen request.header.address
festgelegt:
<HTTPModifier name="HM-set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </HTTPModifier>
Sie können <QueryParams>
nur verwenden, wenn die folgenden Kriterien erfüllt sind:
- HTTP-Verben:
GET
,POST
- 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>
.
<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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode> </Set> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird ein einfacher Statuscode festgelegt:
<HTTPModifier name="HM-set-statuscode-404"> <Set> <StatusCode>404<<StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
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:
<HTTPModifier name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo>response</AssignTo> </HTTPModifier>
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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird ein einfaches Verb für die Anfrage festgelegt:
<HTTPModifier name="HM-set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
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:
<HTTPModifier name="HM-set-verb-to-dynamic-value"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
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
<HTTPModifier continueOnError="[false|true]" enabled="[true|false]" name="POLICY_NAME" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </HTTPModifier>
Beispiel 1
Im folgenden Beispiel wird die Versionsnummer auf 1.1
gesetzt:
<HTTPModifier name="HM-set-version-1"> <Set> <Version>1.1</Version> </Set> </HTTPModifier>
Beispiel 2
Im Folgenden wird eine Variable in geschweiften Klammern verwendet, um die Versionsnummer festzulegen:
<HTTPModifier name="HM-set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo>request</AssignTo> </HTTPModifier>
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 HTTPModifier 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 HTTPModifier-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:
<HTTPModifier name="assignto-3"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> ... </HTTPModifier>
Standardmäßig führt Apigee mit der benutzerdefinierten Anfragenachricht nichts aus. Nach dem Erstellen durchläuft Apigee den Ablauf mit der ursprünglichen Anfrage. Zur Verwendung der benutzerdefinierten Anfrage fügen Sie eine Richtlinie hinzu, die die Anfragenachricht verwendet und in der Konfiguration für diese Richtlinie explizit auf die neu erstellte Anfragenachricht verweist. Auf diese Weise könnten Sie die benutzerdefinierte Anfrage an einen externen Dienstendpunkt weiterleiten.
In den folgenden Beispielen werden benutzerdefinierte Anfragenachrichten erstellt:
Beispiel 1
Im folgenden Beispiel wird ein benutzerdefiniertes Anfrageobjekt mit HTTPModifier erstellt:
<HTTPModifier name="HTTPModifier-3"> <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.addy}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </HTTPModifier>
Dieses Beispiel:
- Erstellt ein neues Anfragenachrichtenobjekt mit dem Namen
MyCustomRequest
. - Bei MyCustomRequest gilt diese Richtlinie:
- Legt den Abfrageparameter
address
in der benutzerdefinierten Nachricht auf den Wert des Abfrageparametersaddy
der eingehenden Anfrage fest. - Legt das HTTP-Verb auf
GET
fest.
- Legt den Abfrageparameter
- Legt
<IgnoreUnresolvedVariables>
auffalse
fest. Wenn<IgnoreUnresolvedVariables>
den Wertfalse
hat und eine der in der Richtlinienkonfiguration referenzierten Variablen nicht vorhanden ist, tritt Apigee in den API-Ablauf Fehlerstatus ein.
Beispiel 2
Das folgende Beispiel zeigt, wie ein benutzerdefiniertes Anfrageobjekt mit HTTPModifier erstellt wird:
<HTTPModifier name="HTTPModifier-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> </Set> </HTTPModifier>
In diesem Beispiel wird eine neue benutzerdefinierte Anfrage namens partner.request
erstellt. Anschließend wird das <Verb>
für die neue Anfrage festgelegt.
Sie können auf die verschiedenen Attribute einer benutzerdefinierten Nachricht in einer anderen HTTPModifier-Richtlinie zugreifen, die später im Ablauf auftritt. Im folgenden Beispiel wird der Wert eines Headers aus einer benannten benutzerdefinierten Antwort abgerufen und in einem neuen Header in der Anfragenachricht abgelegt:
<HTTPModifier name="HM-Set-Header"> <AssignTo>request</AssignTo> <Set> <Headers> <Header name="injected-approval-id">{MyCalloutResponse.header.approval-id}</Header> </Headers> </Set> </HTTPModifier>
Fehlercodes
In diesem Abschnitt werden die zurückgegebenen Fehlercodes und Fehlermeldungen beschrieben, die von Apigee 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 | Diverse Fehlerkorrekturen |
---|---|---|---|
entities.UnresolvedVariable |
500 |
Nachrichtenvorlagenvariable in „Nicht definiert“ oder außerhalb des Geltungsbereichs. | |
steps.httpmodifier.InvalidStatusCode |
500 |
Der aufgelöste Wert des Statuscodes ist ungültig. Weitere Informationen finden Sie im Fehlerstring. | build |
Bereitstellungsfehler
Diese Fehler können auftreten, wenn Sie einen Proxy mit dieser Richtlinie bereitstellen.
Fehlername | Ursache | Diverse Fehlerkorrekturen |
---|---|---|
InvalidIndex |
Wenn der in den Elementen <Remove> der HTTPModifier -Richtlinie angegebene Index 0 oder eine negative Zahl ist, schlägt die Bereitstellung des API-Proxys fehl. |
build |
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 |
---|---|---|
httpmodifier.POLICY_NAME.failed |
POLICY_NAME ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. | httpmodifier.HM-SetResponse.failed = true |
Beispiel für eine Fehlerantwort
{ "fault":{ "detail":{ "errorcode":"steps.httpmodifier.InvalidStatusCode" }, "faultstring":"HTTPModifier[HM-SetResponse]: Invalid status code bad_request" } }
Beispiel für eine Fehlerregel
<FaultRule name="HTTPModifier Faults"> <Step> <Name>HM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "InvalidStatusCode")</Condition> </Step> <Condition>(httpmodifier.failed = true)</Condition> </FaultRule>
Schemas
Jeder Richtlinientyp wird durch ein XML-Schema (.xsd
) definiert. Zu Referenzzwecken sind Richtlinienschemas auf GitHub verfügbar.