

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 API REST à l’aide de la console API Gateway
<a name="set-up-gateway-response-using-the-console"></a>

L’exemple suivant montre comment configurer une réponse de passerelle pour une API REST à l’aide de la console API Gateway. 

**Pour personnaliser une réponse de passerelle à l’aide de la console API Gateway**

1. Connectez-vous à la console API Gateway à l'adresse [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Choisissez une API REST.

1. Dans le panneau de navigation principal, choisissez **Réponses de la passerelle**.

1. Choisissez un type de réponse, puis choisissez **Modifier**. Dans cette procédure, nous allons utiliser **Jeton d’authentification manquant** comme exemple. 

1. Vous pouvez modifier le **Code de statut** généré par API Gateway pour renvoyer un autre code de statut qui répond aux exigences de votre API. 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.

1. Pour renvoyer des en-têtes personnalisés, choisissez **Ajouter un en-tête de réponse** sous **En-têtes de réponse**. À 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ête précédents, un nom de domaine statique (`'a.b.c'`) est mappé à l’en-tête `Allow-Control-Allow-Origin` pour autoriser l’accès CORS à l’API, l’en-tête de demande d’entrée de `x-amzn-RequestId` est mappé à `request-id` dans la réponse, la variable de chemin `petId` de la demande entrante est mappée à l’en-tête `request-path` dans la réponse et le paramètre de requête `q` de la demande d’origine est mappé à l’en-tête `request-query` de la réponse.

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

1. Sélectionnez **Enregistrer les modifications**.

1. Déployez l’API dans une étape nouvelle ou existante.

Testez la réponse de votre passerelle en appelant la commande CURL suivante, en supposant que l’URL d’invocation de la méthode d’API correspondante 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
```

Comme le paramètre de chaîne de requête supplémentaire `q=1` n’est pas compatible avec l’API, 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 serveur principal d’API est [Pet Store](http://petstore-demo-endpoint.execute-api.com/petstore/pets) et que l’API a une variable d’étape `a` définie.