Einrichten einer Gateway-Antwort für eine REST-API mit der API-Gateway-Konsole - Amazon API 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.

Einrichten einer Gateway-Antwort für eine REST-API mit der API-Gateway-Konsole

So passen Sie eine Gateway-Antwort über die API Gateway-Konsole an:
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie eine REST-API aus.

  3. Wählen Sie im Hauptnavigationsbereich Gateway-Antworten.

  4. Wählen Sie einen Antworttyp und dann Bearbeiten aus. In dieser Anleitung verwenden wir Fehlendes Authentifizierungstoken als Beispiel.

  5. Sie können den von API Gateway generierten Statuscode ändern, um einen anderen Statuscode auszugeben, der den Anforderungen Ihrer API entspricht. In diesem Beispiel ändert die Anpassung den Statuscode vom Standard (403) zu 404, da diese Fehlermeldung auftritt, wenn ein Client eine nicht unterstützte oder ungültige Ressource aufruft, die als nicht gefunden betrachtet werden kann.

  6. Um zu den benutzerdefinierten Headern zurückzukehren, wählen Sie Header hinzufügen hinzufügen unter Antwort-Header aus. Zur Veranschaulichung fügen wir die folgenden benutzerdefinierten Header hinzu:

    Access-Control-Allow-Origin:'a.b.c' x-request-id:method.request.header.x-amzn-RequestId x-request-path:method.request.path.petId x-request-query:method.request.querystring.q

    In den vorstehenden Header-Mappings wird dem 'a.b.c'-Header ein statischer Domänenname (Allow-Control-Allow-Origin) hinzugefügt, um den CORS-Zugriff auf die API zuzulassen; der x-amzn-RequestId in der Antwort wird der Eingabeanforderungs-Header request-id zugewiesen; dem petId-Header in der Antwort wird die request-path-Pfadvariable zugewiesen und dem q-Header der Antwort wird der request-query-Abfrageparameter der ursprünglichen Anforderung zugewiesen.

  7. Behalten Sie unter Antwortvorlagen die Option application/json für Inhaltstyp bei und geben Sie die folgende Text-Mapping-Vorlage in den Editor Vorlagentext ein:

    { "message":"$context.error.messageString", "type": "$context.error.responseType", "statusCode": "'404'", "stage": "$context.stage", "resourcePath": "$context.resourcePath", "stageVariables.a": "$stageVariables.a" }

    In diesem Beispiel sehen Sie, wie die $context- und $stageVariables-Eigenschaften den Eigenschaften des Gateway-Antworttexts zugewiesen werden.

  8. Wählen Sie Änderungen speichern.

  9. Stellen Sie die API in einer neuen oder vorhandenen Stufe bereit.

Testen Sie Ihre Gateway-Antwort, indem Sie den folgenden CURL-Befehl aufrufen. Dabei wird davon ausgegangen, dass die Aufruf-URL der entsprechenden API-Methode https://o81lxisefl.execute-api.us-east-1.amazonaws.com/custErr/pets/{petId} ist:

curl -v -H 'x-amzn-RequestId:123344566' https://o81lxisefl.execute-api.us-east-1.amazonaws.com/custErr/pets/5/type?q=1

Da der zusätzliche Abfragezeichenfolge-Parameter q=1 nicht mit der API kompatibel ist, wird ein Fehler zurückgegeben, um die angegebene Gateway-Antwort auszulösen. Sie sollten eine Gateway-Antwort wie die folgende erhalten:

> GET /custErr/pets/5?q=1 HTTP/1.1 Host: o81lxisefl.execute-api.us-east-1.amazonaws.com User-Agent: curl/7.51.0 Accept: */* HTTP/1.1 404 Not Found Content-Type: application/json Content-Length: 334 Connection: keep-alive Date: Tue, 02 May 2017 03:15:47 GMT x-amzn-RequestId: 123344566 Access-Control-Allow-Origin: a.b.c x-amzn-ErrorType: MissingAuthenticationTokenException header-1: static x-request-query: 1 x-request-path: 5 X-Cache: Error from cloudfront Via: 1.1 441811a054e8d055b893175754efd0c3.cloudfront.net (CloudFront) X-Amz-Cf-Id: nNDR-fX4csbRoAgtQJ16u0rTDz9FZWT-Mk93KgoxnfzDlTUh3flmzA== { "message":"Missing Authentication Token", "type": MISSING_AUTHENTICATION_TOKEN, "statusCode": '404', "stage": custErr, "resourcePath": /pets/{petId}, "stageVariables.a": a }

Im vorherigen Beispiel wird davon ausgegangen, dass das API-Backend Pet Store ist und die API über die definierte Stufenvariable a verfügt.