HTTPModifier-Richtlinie

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. 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 name kann Buchstaben, Ziffern, Leerzeichen, Bindestriche, Unterstriche und Punkte enthalten. Dieser Wert darf 255 Zeichen nicht überschreiten.

Optional können Sie das Element <DisplayName> verwenden, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

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.

<Add> fügt der Nachricht Header oder Parameter hinzu, die in der ursprünglichen Nachricht nicht vorhanden sind. Beachten Sie, dass <Set> ebenfalls diese Funktion bietet.

Verwenden Sie zum Überschreiben vorhandener Header oder Parameter das <Set>-Element.

<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.

<Set> überschreibt Header oder Parameter, die in der ursprünglichen Nachricht bereits vorhanden sind, oder fügt neue Parameter hinzu, wenn dies nicht der Fall ist.

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: Bei 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: Mit curl fügen Sie -H "Content-Length: 0" in Ihre Anfrage ein.

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 true erstellt die Richtlinie eine neue Variable des durch type angegebenen Typs (request oder response). Wenn Sie den Namen der neuen Variable nicht angeben, erstellt die Richtlinie ein neues Anfrage- oder Antwortobjekt basierend auf dem Wert von type.

Bei false reagiert die Richtlinie auf eine von zwei Arten:

  • Wenn <AssignTo> den Variablennamen in eine Anfrage oder Antwort auflösen kann, wird die Verarbeitung fortgesetzt. Befindet sich die Richtlinie beispielsweise in einem Anfragefluss, ist die Variable das Anfrageobjekt. Wenn sich die Richtlinie in einer Antwort befindet, ist die Variable das Antwortobjekt.
  • Wenn <AssignTo> nicht aufgelöst oder in einen Nicht-Nachrichtentyp aufgelöst werden kann, gibt die Richtlinie einen Fehler aus.

Wenn createNew nicht angegeben ist, gibt die Richtlinie auf eine der folgenden beiden Arten:

  • Wird <AssignTo> in eine Nachricht aufgelöst, dann wird die Verarbeitung mit dem nächsten Schritt fortgesetzt.
  • Wenn <AssignTo> nicht aufgelöst oder in einen Nicht-Nachrichtentyp aufgelöst werden kann, wird eine neue Variable des Typs type erstellt.
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 true ist. Gültige Werte sind request und response.

Der Standardwert ist request. Wenn Sie dieses Attribut weglassen, erstellt Apigee entweder eine Anfrage oder eine Antwort, je nachdem, an welcher Stelle im Ablauf diese Richtlinie ausgeführt wird.

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 Abfrageparameters addy der eingehenden Anfrage fest.
    • Legt das HTTP-Verb auf GET fest.
  • Legt <IgnoreUnresolvedVariables> auf false fest. Wenn <IgnoreUnresolvedVariables> den Wert false 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.

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.

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.