Beispiele für das Überschreiben von Anforderungs- und Antwortparametern und Statuscodes eines API Benutzers - APIAmazon-Gateway

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.

  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie unter APIsdie PetStore API Option und anschließend Ressourcen aus.

  3. Wählen Sie in der Ressourcen-Struktur unter GET die /{petId}-Methode aus.

  4. Wählen Sie die Registerkarte Test. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.

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

  6. Klicken Sie auf der Registerkarte Integrationsantwort unter Standard - Antwort auf Bearbeiten.

  7. Wählen Sie Zuordnungsvorlagen aus.

  8. Wählen Sie Add mapping template.

  9. Geben Sie für Content type (Inhaltstyp) application/json ein.

  10. Geben Sie für Vorlagentext Folgendes ein:

    #set($inputRoot = $input.path('$')) $input.json("$") #if($inputRoot.toString().contains("error")) #set($context.responseOverride.status = 400) #end
  11. Wählen Sie Speichern.

  12. Wählen Sie die Registerkarte Test.

  13. Geben Sie unter petId den Wert -1 ein.

  14. 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.header_name zugeordnet ist, der zwei andere Header kombiniert.

  1. Melden Sie sich unter https://console.aws.amazon.com/apigateway bei der API Gateway-Konsole an.

  2. Wählen APIsSie unter PetStore API.

  3. Wählen Sie in der Ressourcen-Struktur unter GET die /pet-Methode aus.

  4. Klicken Sie auf der Registerkarte Methodenanfrage unter Methodenanfrage-Einstellungen auf Bearbeiten.

  5. Wählen Sie HTTPAnforderungsheader und anschließend Kopfzeile hinzufügen aus.

  6. Geben Sie unter Name header1 ein.

  7. Klicken Sie auf Header hinzufügen und erstellen Sie dann einen zweiten Header namens header2.

  8. Wählen Sie Speichern.

  9. Klicken Sie auf der Registerkarte Integrationsanfrage unter Einstellungen für Integrationsanfragen auf Bearbeiten.

  10. Wählen Sie für Anforderungstext-Pass-Through die Option Wenn keine Vorlagen definiert sind (empfohlen) aus.

  11. Wählen Sie Vorlagen zuordnen aus und gehen Sie dann wie folgt vor:

    1. Wählen Sie Add mapping template.

    2. Geben Sie für Content type (Inhaltstyp) application/json ein.

    3. 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])
  12. Wählen Sie Speichern.

  13. Wählen Sie die Registerkarte Test.

  14. Kopieren Sie unter Headers für {pets} den folgenden Code:

    header1:header1Val header2:header2Val
  15. 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 });