Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Sie können API-Anforderungen von Clients ändern, bevor sie Ihre Backend-Integrationen erreichen. Sie können auch die Antwort von Integrationen ändern, bevor API Gateway die Antwort an Clients zurückgibt. Sie verwenden die Parameterzuordnung, um API-Anfragen und -Antworten für HTTP zu ändern APIs. Um das Parameter-Mapping zu verwenden, geben Sie zu ändernde API-Anforderungs- oder Antwortparameter an und wie diese Parameter geändert werden sollen.
Transformieren von API-Anforderungen
Sie verwenden Anforderungsparameter, um Anforderungen zu ändern, bevor sie Ihre Backend-Integrationen erreichen. Sie können Header, Abfragezeichenfolgen oder den Anforderungspfad ändern.
Anforderungsparameter sind eine Schlüssel-Wert-Zuordnung. Der Schlüssel gibt den Speicherort des zu ändernden Anforderungsparameters und an, wie er geändert werden soll. Der Wert gibt die neuen Daten für den Parameter an.
Die folgende Tabelle zeigt unterstützte Schlüssel.
Typ | Syntax |
---|---|
Header | append|overwrite|remove:header. |
Abfragezeichenfolge | append|overwrite|remove:querystring. |
Pfad | overwrite:path |
Die folgende Tabelle zeigt unterstützte Werte, die Sie Parametern zuordnen können.
Typ | Syntax | Hinweise |
---|---|---|
Header-Wert | $request.header. name oder $ {request.header. name } |
Bei Header-Namen wird nicht zwischen Groß- und Kleinschreibung unterschieden. API Gateway kombiniert mehrere Headerwerte mit Kommas, z. B. "header1": "value1,value2" . Einige Header sind reserviert. Weitere Informationen hierzu finden Sie unter Reservierte Header. |
Abfragezeichenfolgenwert | $request.querystring. name oder $ {request.querystring. name } |
Abfragezeichenfolgennamen unterscheiden zwischen Groß- und Kleinschreibung. API Gateway kombiniert mehrere Werte mit Kommas, z. B. "querystring1" "Value1,Value2" . |
Anforderungstext | $request.body. name oder $ {request.body. name } |
Ein JSON-Pfadausdruck. Rekursiver Abstieg ($request.body..name) ) und Filterausdrücke (?(expression) ) werden nicht unterstützt. AnmerkungWenn Sie einen JSON-Pfad angeben, schneidet API Gateway den Anfragetext auf 100 KB ab und wendet dann den Auswahlausdruck an. Um Payloads mit mehr als 100 KB zu senden, geben Sie an |
Anforderungspfad | $request.path oder ${request.path} | Der Anforderungspfad ohne den Namen der Stufe. |
Path-Parameter | $request.path. name oder $ {request.path. name } |
Der Wert eines Pfadparameters in der Anforderung. Beispiel: Wenn die Route /pets/{petId} ist, können Sie den Parameter petId aus der Anforderung mit $request.path.petId zuordnen. |
Kontextvariable | $kontext. variableName oder $ {context. variableName } |
Der Wert einer Kontextvariablen. AnmerkungNEs werden ausschließlich die Sonderzeichen |
Stufenvariable | $stageVariablen. variableName oder $ {StageVariables. variableName } |
Der Wert einer Stufenvariablen. |
Statischer Wert | string |
Ein konstanter Wert. |
Anmerkung
Um mehrere Variablen in einem Auswahlausdruck zu verwenden, schließen Sie die Variable in Klammern ein. Beispiel, ${request.path.name} ${request.path.id}
.
Transformieren von API-Antworten
Sie verwenden Antwortparameter, um die HTTP-Antwort einer Backend-Integration zu transformieren, bevor Sie die Antwort an Clients zurückgeben. Sie können Header oder den Statuscode einer Antwort ändern, bevor API Gateway die Antwort an Clients zurückgibt.
Sie konfigurieren die Antwortparameter für jeden Statuscode, den Ihre Integration zurückgibt. Antwortparameter sind eine Schlüssel-Wert-Zuordnung. Der Schlüssel gibt den Speicherort des zu ändernden Anforderungsparameters und an, wie er geändert werden soll. Der Wert gibt die neuen Daten für den Parameter an.
Die folgende Tabelle zeigt unterstützte Schlüssel.
Typ | Syntax |
---|---|
Header | append|overwrite|remove:header. |
Statuscode | overwrite:statuscode |
Die folgende Tabelle zeigt unterstützte Werte, die Sie Parametern zuordnen können.
Typ | Syntax | Hinweise |
---|---|---|
Header-Wert | $response.header. name oder $ {response.header. name } |
Bei Header-Namen wird nicht zwischen Groß- und Kleinschreibung unterschieden. API Gateway kombiniert mehrere Headerwerte mit Kommas, z. B. "header1": "value1,value2" . Einige Header sind reserviert. Weitere Informationen hierzu finden Sie unter Reservierte Header. |
Antworttext | $response.body. name oder $ {response.body. name } |
Ein JSON-Pfadausdruck. Rekursiver Abstieg ($response.body..name ) und Filterausdrücke (?(expression) ) werden nicht unterstützt. AnmerkungWenn Sie einen JSON-Pfad angeben, kürzt API Gateway den Antworttext auf 100 KB und wendet dann den Auswahlausdruck an. Um Payloads mit mehr als 100 KB zu senden, geben Sie an |
Kontextvariable | $kontext. variableName oder $ {context. variableName } |
Der Wert einer unterstützten Kontextvariablen. |
Stufenvariable | $stageVariablen. variableName oder $ {StageVariables. variableName } |
Der Wert einer Stufenvariablen. |
Statischer Wert | string |
Ein konstanter Wert. |
Anmerkung
Um mehrere Variablen in einem Auswahlausdruck zu verwenden, schließen Sie die Variable in Klammern ein. Beispiel, ${request.path.name} ${request.path.id}
.
Reservierte Header
Die folgenden Header sind reserviert. Sie können keine Anforderungs- oder Antwort-Mappings für diese Header konfigurieren.
-
access-control-*
-
apigw-*
-
Autorisierung
-
Verbindung
-
Content-Encoding
-
Content-Length
-
Content-Location
-
Forwarded
-
Keep-Alive
-
Urspung
-
Proxy-Authenticate
-
Proxy-Authorization
-
TE
-
Trailers
-
Transfer-Encoding
-
Upgrade
-
x-amz-*
-
x-amzn-*
-
X-Forwarded-For
-
X-Forwarded-Host
-
X-Forwarded-Proto
-
Via
Beispiele
In den folgenden AWS CLI Beispielen werden Parameterzuordnungen konfiguriert. AWS CloudFormation Beispielvorlagen finden Sie unter. GitHub
Hinzufügen eines Headers zu einer API-Anforderung
Der folgende Befehl create-integration erstellt einen Header, der header1
nach einer API-Anfrage benannt ist, bevor diese Ihre Backend-Integration erreicht. API Gateway füllt den Header mit der Anforderungs-ID auf.
aws apigatewayv2 create-integration \ --api-id abcdef123 \ --integration-type HTTP_PROXY \ --payload-format-version 1.0 \ --integration-uri 'https://api.example.com' \ --integration-method ANY \ --request-parameters '{ "append:header.header1": "$context.requestId" }'
Umbenennen eines Anforderungsheaders
Der folgende Befehl create-integration benennt einen Anforderungsheader von in um: header1
header2
aws apigatewayv2 create-integration \ --api-id abcdef123 \ --integration-type HTTP_PROXY \ --payload-format-version 1.0 \ --integration-uri 'https://api.example.com' \ --integration-method ANY \ --request-parameters '{ "append:header.header2": "$request.header.header1", "remove:header.header1": "''"}'
Ändern der Antwort aus einer Integration
Der folgende Befehl create-integration konfiguriert Antwortparameter für eine Integration. Wenn die Integrationen einen 500-Statuscode zurückgeben, ändert API Gateway den Statuscode auf 403 und fügt der Antwort header1
1 hinzu. Wenn die Integration einen 404-Statuscode zurückgibt, fügt API Gateway der Antwort einen error
-Header hinzu.
aws apigatewayv2 create-integration \ --api-id abcdef123 \ --integration-type HTTP_PROXY \ --payload-format-version 1.0 \ --integration-uri 'https://api.example.com' \ --integration-method ANY \ --response-parameters '{"500" : {"append:header.header1": "$context.requestId", "overwrite:statuscode" : "403"}, "404" : {"append:header.error" : "$stageVariables.environmentId"} }'
Entfernen konfigurierter Parameter-Mappings
Der folgende Befehl update-integration entfernt zuvor konfigurierte Anforderungsparameter für. append:header.header1
Außerdem werden zuvor konfigurierte Antwortparameter für einen 200-Statuscode entfernt.
aws apigatewayv2 update-integration \ --api-id abcdef123 \ --integration-id hijk456 \ --request-parameters '{"append:header.header1" : ""}' \ --response-parameters '{"200" : {}}'