Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configurer une réponse de passerelle pour une REST API utilisation de la console API Gateway
L'exemple suivant montre comment configurer une réponse de passerelle pour une REST API utilisation de la console API Gateway
Pour personnaliser une réponse de passerelle à l'aide de la console API Gateway
Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway
. Choisissez un RESTAPI.
-
Dans le panneau de navigation principal, choisissez Réponses de la passerelle.
-
Choisissez un type de réponse, puis choisissez Modifier. Dans cette procédure, nous allons utiliser Jeton d’authentification manquant comme exemple.
-
Vous pouvez modifier le code de statut API généré par Gateway pour renvoyer un code de statut différent répondant à vos API besoins. Dans cet exemple, la personnalisation modifie le code de statut de la valeur par défaut (
403
) à404
, car ce message d'erreur est émis lorsqu'un client appelle une ressource non prise en charge ou non valide qui peut être considérée comme non trouvée. -
Pour renvoyer des en-têtes personnalisés, choisissez Ajouter un en-tête de réponse sous En-têtes de réponse. A titre d'illustration, nous allons ajouter les en-têtes personnalisés suivants :
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
Dans les mappages d'en-têtes précédents, un nom de domaine statique (
'a.b.c'
) est mappé à l'Allow-Control-Allow-Origin
en-tête pour permettre l'CORSaccès à API ; l'en-tête de demande d'entréex-amzn-RequestId
est mappérequest-id
dans la réponse ; la variable depetId
chemin de la demande entrante est mappée à l'request-path
en-tête de la réponse ; et le paramètre deq
requête de la demande d'origine est mappé à l'en-tête de larequest-query
réponse. -
Sous Modèles de réponse, conservez
application/json
pour le Type de contenu et saisissez le modèle de mappage de corps suivant dans l'éditeur Modèle de mappage de corps :{ "message":"$context.error.messageString", "type": "$context.error.responseType", "statusCode": "'404'", "stage": "$context.stage", "resourcePath": "$context.resourcePath", "stageVariables.a": "$stageVariables.a" }
Cet exemple montre comment mapper les propriétés
$context
et$stageVariables
aux propriétés du corps de demande de passerelle. -
Sélectionnez Enregistrer les modifications.
-
APIDéployez-le sur une étape nouvelle ou existante.
Testez la réponse de votre passerelle en appelant la CURL commande suivante, en supposant que l'appel de la API méthode correspondante URL est https://
: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
Le paramètre de chaîne de requête supplémentaire q=1
n'étant pas compatible avec leAPI, une erreur est renvoyée par la réponse de passerelle spécifiée. Vous devriez obtenir une réponse de passerelle semblable à ce qui suit :
> 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 }
L'exemple précédent suppose que le API backend est Pet Storea