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.
Beispiele für das Überschreiben von Anforderungs- und Antwortparametern und Statuscodes eines API Benutzers
Die folgenden Beispiele zeigen, wie Sie eine Überschreibung von Zuordnungsvorlagen erstellen und testen. In den ersten beiden Beispielen wird das Beispiel API als Ausgangspunkt verwendet AWS Management Console . Die letzten beiden Beispiele verwenden das AWS CLI und das SDK für JavaScript.
Überschreiben Sie API den Antwortstatuscode eines Benutzers mit dem AWS Management Console
Um anhand des PetStore Beispiels ein Haustier abzurufenAPI, verwenden Sie die API Methode request of. GET
/pets/{petId}
Dabei {petId}
handelt es sich um einen Pfadparameter, der zur Laufzeit eine Zahl annehmen kann.
In diesem Beispiel überschreiben Sie den Antwortcode dieser GET
Methode, indem Sie eine Zuordnungsvorlage erstellen, die dem 400
Zeitpunkt $context.responseOverride.status
entspricht, zu dem ein Fehler erkannt wird.
Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway
an. -
Wählen Sie unter APIsdie PetStore API Option und anschließend Ressourcen aus.
-
Wählen Sie in der Ressourcen-Struktur unter
GET
die/{petId}
-Methode aus. -
Wählen Sie die Registerkarte Test. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.
-
Geben Sie für ein petId
-1
, und wählen Sie dann Test aus.In den Ergebnissen fällt Ihnen zweierlei auf:
Zunächst weist der Antworttext auf einen out-of-range Fehler hin:
{ "errors": [ { "key": "GetPetRequest.petId", "message": "The value is out of range." } ] }
Zweitens: Die letzte Zeile unter dem Feld Protokolle endet mit:
Method completed with status: 200
. -
Klicken Sie auf der Registerkarte Integrationsantwort unter Standard - Antwort auf Bearbeiten.
-
Wählen Sie Zuordnungsvorlagen aus.
-
Wählen Sie Add mapping template.
-
Geben Sie für Content type (Inhaltstyp)
application/json
ein. -
Geben Sie für Vorlagentext Folgendes ein:
#set($inputRoot = $input.path('$')) $input.json("$") #if($inputRoot.toString().contains("error")) #set($context.responseOverride.status = 400) #end
-
Wählen Sie Speichern.
-
Wählen Sie die Registerkarte Test.
-
Geben Sie unter petId den Wert
-1
ein. -
In den Ergebnissen weist der Antworttext auf einen out-of-range Fehler hin:
{ "errors": [ { "key": "GetPetRequest.petId", "message": "The value is out of range." } ] }
Die letzte Zeile unter dem Feld Logs endet nun jedoch mit:
Method completed with status: 400
.
Überschreiben Sie API die Anforderungsparameter und Header eines Benutzers mit dem AWS Management Console
In diesem Beispiel überschreiben Sie den Anforderungsheadercode der GET
Methode, indem Sie eine Zuordnungsvorlage erstellen, die einem neuen Header $context.requestOverride.header.
zugeordnet ist, der zwei andere Header kombiniert.header_name
Melden Sie sich unter https://console.aws.amazon.com/apigateway
bei der API Gateway-Konsole an. -
Wählen APIsSie unter PetStore API.
-
Wählen Sie in der Ressourcen-Struktur unter
GET
die/pet
-Methode aus. -
Klicken Sie auf der Registerkarte Methodenanfrage unter Methodenanfrage-Einstellungen auf Bearbeiten.
-
Wählen Sie HTTPAnforderungsheader und anschließend Kopfzeile hinzufügen aus.
-
Geben Sie unter Name
header1
ein. -
Klicken Sie auf Header hinzufügen und erstellen Sie dann einen zweiten Header namens
header2
. -
Wählen Sie Speichern.
-
Klicken Sie auf der Registerkarte Integrationsanfrage unter Einstellungen für Integrationsanfragen auf Bearbeiten.
-
Wählen Sie für Anforderungstext-Pass-Through die Option Wenn keine Vorlagen definiert sind (empfohlen) aus.
-
Wählen Sie Vorlagen zuordnen aus und gehen Sie dann wie folgt vor:
-
Wählen Sie Add mapping template.
-
Geben Sie für Content type (Inhaltstyp)
application/json
ein. -
Geben Sie für Vorlagentext Folgendes ein:
#set($header1Override = "foo") #set($header3Value = "$input.params('header1')$input.params('header2')") $input.json("$") #set($context.requestOverride.header.header3 = $header3Value) #set($context.requestOverride.header.header1 = $header1Override) #set($context.requestOverride.header.multivalueheader=[$header1Override, $header3Value])
-
-
Wählen Sie Speichern.
-
Wählen Sie die Registerkarte Test.
-
Kopieren Sie unter Headers für {pets} den folgenden Code:
header1:header1Val header2:header2Val
-
Wählen Sie Test aus.
Im Protokoll sollten Sie jetzt einen Eintrag mit diesem Text sehen:
Endpoint request headers: {header3=header1Valheader2Val, header2=header2Val, header1=foo, x-amzn-apigateway-api-id=
<api-id>
, Accept=application/json, multivalueheader=foo,header1Valheader2Val}
Überschreiben Sie API die Anforderungsparameter und Header eines Benutzers mithilfe der AWS CLI
Das folgende CLI Beispiel zeigt, wie der put-integration
Befehl verwendet wird, um einen Antwortcode zu überschreiben:
aws apigateway put-integration --rest-api-id
<API_ID>
--resource-id<PATH_TO_RESOURCE_ID>
--http-method<METHOD>
--type<INTEGRATION_TYPE>
--request-templates<REQUEST_TEMPLATE_MAP>
where <REQUEST_TEMPLATE_MAP>
ist eine Zuordnung vom Inhaltstyp zu einer Zeichenfolge der anzuwendenden Vorlage. Das Mapping weist folgende Struktur auf:
Content_type1=template_string,Content_type2=template_string
oder in der JSON Syntax:
{"content_type1": "template_string" ...}
Das folgende Beispiel zeigt, wie der put-integration-response
Befehl verwendet wird, um den Antwortcode API von an zu überschreiben:
aws apigateway put-integration-response --rest-api-id
<API_ID>
--resource-id<PATH_TO_RESOURCE_ID>
--http-method<METHOD>
--status-code<STATUS_CODE>
--response-templates<RESPONSE_TEMPLATE_MAP>
where <RESPONSE_TEMPLATE_MAP>
hat das gleiche Format wie <REQUEST_TEMPLATE_MAP>
oben.
Überschreiben Sie API die Anforderungsparameter und Header eines Benutzers mit dem Befehl for SDK JavaScript
Das folgende Beispiel demonstriert, wie Sie mit dem put-integration
-Befehl einen Antwortcode überschreiben:
Anfrage:
var params = { httpMethod: 'STRING_VALUE', /* required */ resourceId: 'STRING_VALUE', /* required */ restApiId: 'STRING_VALUE', /* required */ type: HTTP | AWS | MOCK | HTTP_PROXY | AWS_PROXY, /* required */ requestTemplates: { '
<Content_type>
': 'TEMPLATE_STRING', /* '<String>
': ... */ }, }; apigateway.putIntegration(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response });
Antwort:
var params = { httpMethod: 'STRING_VALUE', /* required */ resourceId: 'STRING_VALUE', /* required */ restApiId: 'STRING_VALUE', /* required */ statusCode: 'STRING_VALUE', /* required */ responseTemplates: { '<Content_type>': 'TEMPLATE_STRING', /* '<String>': ... */ }, }; apigateway.putIntegrationResponse(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response });