

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.

# Activation de la prise en charge binaire à l’aide de l’API REST API Gateway
<a name="api-gateway-payload-encodings-configure-with-control-service-api"></a>

Les tâches suivantes montrent comment activer la prise en charge binaire à l’aide des appels de l’API REST API Gateway.

**Topics**
+ [Ajout et mise à jour des types de supports binaires d’une API](#api-gateway-payload-encodings-setup-with-api-set-encodings-map)
+ [Configuration des conversions de charge utile de la demande](#api-gateway-payload-encodings-setup-with-api-set-integration-request-encoding)
+ [Configuration des conversions de charge utile pour la réponse](#api-gateway-payload-encodings-setup-with-api-set-integration-response-encoding)
+ [Conversion des données binaires en données de texte](#api-gateway-payload-encodings-convert-binary-to-string)
+ [Conversion des données de texte en charge utile binaire](#api-gateway-payload-encodings-convert-string-to-binary)
+ [Passage via une charge utile binaire](#api-gateway-payload-encodings-pass-binary-as-is)

## Ajout et mise à jour des types de supports binaires d’une API
<a name="api-gateway-payload-encodings-setup-with-api-set-encodings-map"></a>

Pour permettre à API Gateway de prendre en charge un nouveau type de support binaire, vous devez ajouter le type de support binaire à la liste `binaryMediaTypes` de la ressource `RestApi`. Par exemple, pour qu’API Gateway gère les images JPEG, envoyez une demande `PATCH` à la ressource `RestApi` : 

```
PATCH /restapis/<restapi_id>

{
  "patchOperations" : [ {
    "op" : "add",
    "path" : "/binaryMediaTypes/image~1jpeg"
  } 
 ]
}
```

La spécification de type MIME de `image/jpeg` qui fait partie de la valeur de propriété `path` est échappée comme `image~1jpeg`.

Pour mettre à jour les types de supports binaires pris en charge, remplacez ou supprimez le type de support de la liste `binaryMediaTypes` de la ressource `RestApi`. Par exemple, pour remplacer la prise en charge binaire des fichiers JPEG par celle des octets bruts, soumettez une demande `PATCH` à la ressource `RestApi`, comme suit : 

```
PATCH /restapis/<restapi_id>

{
  "patchOperations" : [{
    "op" : "replace",
    "path" : "/binaryMediaTypes/image~1jpeg",
    "value" : "application/octet-stream"
  },
  {
    "op" : "remove",
    "path" : "/binaryMediaTypes/image~1jpeg"
  }]
}
```

## Configuration des conversions de charge utile de la demande
<a name="api-gateway-payload-encodings-setup-with-api-set-integration-request-encoding"></a>

Si le point de terminaison nécessite une entrée binaire, définissez la propriété `contentHandling` de la ressource `Integration` sur `CONVERT_TO_BINARY`. Pour ce faire, présentez une `PATCH` demande, comme suit : 

```
PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration

{
  "patchOperations" : [ {
    "op" : "replace",
    "path" : "/contentHandling",
    "value" : "CONVERT_TO_BINARY"
  }]
}
```

## Configuration des conversions de charge utile pour la réponse
<a name="api-gateway-payload-encodings-setup-with-api-set-integration-response-encoding"></a>

Si le client accepte le résultat comme blob binaire au lieu de la charge utile encodée en base64 renvoyée par le point de terminaison, définissez la propriété `contentHandling` de la ressource `IntegrationResponse` sur `CONVERT_TO_BINARY`. Pour ce faire, soumettez une demande `PATCH`, comme suit :

```
PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration/responses/<status_code>

{
  "patchOperations" : [ {
    "op" : "replace",
    "path" : "/contentHandling",
    "value" : "CONVERT_TO_BINARY"
  }]
}
```

## Conversion des données binaires en données de texte
<a name="api-gateway-payload-encodings-convert-binary-to-string"></a>

Pour envoyer des données binaires sous forme de propriété JSON de l'entrée à AWS Lambda ou à Kinesis via API Gateway, procédez comme suit : 

1. Activez la prise en charge de la charge utile binaire de l’API en ajoutant le nouveau type de support binaire de `application/octet-stream` à la liste de l’API `binaryMediaTypes`. 

   ```
   PATCH /restapis/<restapi_id>
   
   {
     "patchOperations" : [ {
       "op" : "add",
       "path" : "/binaryMediaTypes/application~1octet-stream"
     } 
    ]
   }
   ```

1. Définissez `CONVERT_TO_TEXT` sur la propriété `contentHandling` de la ressource `Integration` et fournissez fournir un modèle de mappage pour attribuer la chaîne encodée en base64 des données binaires à une propriété JSON. Dans l’exemple suivant, la propriété JSON est `body` et `$input.body` contient la chaîne encodée en base64.

   ```
   PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration
   
   {
     "patchOperations" : [
       {
         "op" : "replace",
         "path" : "/contentHandling",
         "value" : "CONVERT_TO_TEXT"
       },
       {
         "op" : "add",
         "path" : "/requestTemplates/application~1octet-stream",
         "value" : "{\"body\": \"$input.body\"}"
       }
     ]
   }
   ```

## Conversion des données de texte en charge utile binaire
<a name="api-gateway-payload-encodings-convert-string-to-binary"></a>

Supposons qu’une fonction Lambda renvoie un fichier d’image sous forme de chaîne encodée en base64. Pour transmettre cette sortie binaire au client via API Gateway, procédez comme suit : 

1. Mettez à jour la liste `binaryMediaTypes` de l’API en ajoutant le type de support binaire de `application/octet-stream`, s’il n’est pas déjà dans la liste. 

   ```
   PATCH /restapis/<restapi_id>
   
   {
     "patchOperations" : [ {
       "op" : "add",
       "path" : "/binaryMediaTypes/application~1octet-stream",
     }]
   }
   ```

1.  Définissez la propriété `contentHandling` de la ressource `Integration` sur `CONVERT_TO_BINARY`. Ne définissez pas de modèle de mappage. Si vous ne définissez pas de modèle de mappage, API Gateway appelle le modèle de relais pour renvoyer le blob binaire encodé en base64 sous forme de fichier image au client. 

   ```
   PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration/responses/<status_code>
   
   {
     "patchOperations" : [
       {
         "op" : "replace",
         "path" : "/contentHandling",
         "value" : "CONVERT_TO_BINARY"
       }
     ]
   }
   ```

## Passage via une charge utile binaire
<a name="api-gateway-payload-encodings-pass-binary-as-is"></a>

 Pour stocker une image dans un compartiment Amazon S3 à l’aide d’API Gateway, procédez comme suit : 

1. Mettez à jour la liste `binaryMediaTypes` de l’API en ajoutant le type de support binaire de `application/octet-stream`, s’il n’est pas déjà dans la liste. 

   ```
   PATCH /restapis/<restapi_id>
   
   {
     "patchOperations" : [ {
       "op" : "add",
       "path" : "/binaryMediaTypes/application~1octet-stream"
     }
    ]
   }
   ```

1. Sur la propriété `contentHandling` de la ressource `Integration`, définissez `CONVERT_TO_BINARY`. Définissez `WHEN_NO_MATCH` comme valeur de propriété `passthroughBehavior` sans définir de modèle de mappage. Cela permet à API Gateway d’appeler le modèle de relais. 

   ```
   PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration
   
   {
     "patchOperations" : [
       {
         "op" : "replace",
         "path" : "/contentHandling",
         "value" : "CONVERT_TO_BINARY"
       },
       {
         "op" : "replace",
         "path" : "/passthroughBehaviors",
         "value" : "WHEN_NO_MATCH"
       }
     ]
   }
   ```