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.
Richten Sie mithilfe der Gateway-Konsole eine Gateway-Antwort für einen ein REST API API
Das folgende Beispiel zeigt, wie Sie REST API mithilfe der Gateway-Konsole eine API Gateway-Antwort für einen einrichten
So passen Sie eine Gateway-Antwort mithilfe der API Gateway-Konsole an
Melden Sie sich unter https://console.aws.amazon.com/apigateway
bei der API Gateway-Konsole an. Wählen Sie ein RESTAPI.
-
Wählen Sie im Hauptnavigationsbereich Gateway-Antworten.
-
Wählen Sie einen Antworttyp und dann Bearbeiten aus. In dieser Anleitung verwenden wir Fehlendes Authentifizierungstoken als Beispiel.
-
Sie können den vom API Gateway generierten Statuscode ändern, um einen anderen Statuscode zurückzugeben, der Ihren API Anforderungen entspricht. In diesem Beispiel ändert die Anpassung den Statuscode vom Standard (
403
) zu404
, da diese Fehlermeldung auftritt, wenn ein Client eine nicht unterstützte oder ungültige Ressource aufruft, die als nicht gefunden betrachtet werden kann. -
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 vorherigen Header-Zuordnungen wird dem Header ein statischer Domainname (
'a.b.c'
) zugeordnet, um denAllow-Control-Allow-Origin
CORS Zugriff auf den zu ermöglichenAPI; der Eingabeanforderungsheader vonx-amzn-RequestId
wirdrequest-id
in der Antwort zugeordnet; diepetId
Pfadvariable der eingehenden Anfrage wird demrequest-path
Header in der Antwort zugeordnet; und derq
Abfrageparameter der ursprünglichen Anfrage wird demrequest-query
Header der Antwort zugeordnet. -
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. -
Wählen Sie Änderungen speichern aus.
-
Stellen Sie das in einer neuen oder vorhandenen Phase bereitAPI.
Testen Sie Ihre Gateway-Antwort, indem Sie den folgenden CURL Befehl aufrufen, vorausgesetzt, der Aufruf der entsprechenden API Methode URL lautethttps://
:o81lxisefl
.execute-api.us-east-1.amazonaws.com/custErr/pets/{petId}
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 Abfragezeichenfolgenparameter q=1
nicht mit dem kompatibel istAPI, wird von der angegebenen Gateway-Antwort ein Fehler zurückgegeben. 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 es sich bei dem API Backend um Pet Storea
, definiert ist.