

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.

# Types de médias binaires pour REST APIs dans API Gateway
<a name="api-gateway-payload-encodings"></a>

Dans API Gateway, la demande et la réponse d’API peuvent avoir une charge utile textuelle ou binaire. Une charge utile de texte est une chaîne JSON codée en `UTF-8`. Une charge utile binaire est tout élément autre qu’une charge utile textuelle. La charge utile binaire peut être, par exemple, un fichier JPEG, un GZip fichier ou un fichier XML. La configuration d’API requise pour prendre en charge les supports binaires varie selon que votre API utilise des intégrations de proxy ou autre que de proxy. 

Si vous utilisez une intégration proxy avec le streaming de réponse à la charge utile, vous n'avez pas besoin de configurer vos types de médias binaires. Pour de plus amples informations, veuillez consulter [Diffusez la réponse d'intégration pour vos intégrations de proxy dans API Gateway](response-transfer-mode.md).

## AWS Lambda intégrations de proxy
<a name="api-gateway-payload-encodings-proxy"></a>

Pour gérer les charges utiles binaires pour les intégrations de AWS Lambda proxy, vous devez encoder la réponse de votre fonction en base64. Vous devez également configurer le [binaryMediaTypes](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html#apigw-Type-RestApi-binaryMediaTypes)pour votre API. La configuration `binaryMediaTypes` de votre API est une liste de types de contenu que votre API traite comme des données binaires. Par exemple, les types de supports binaires incluent `image/png` ou `application/octet-stream`. Vous pouvez utiliser le caractère générique (`*`) pour couvrir plusieurs types de supports.

API Gateway utilise le premier en-tête `Accept` des clients pour déterminer si une réponse doit renvoyer un support binaire. Pour renvoyer un support binaire lorsque vous ne pouvez pas contrôler l’ordre des valeurs d’en-tête `Accept`, telles que les demandes d’un navigateur, définissez les types de supports binaires de votre API sur `*/*`.

Pour obtenir un exemple de code, consultez [Renvoi d’un support binaire d’une intégration de proxy Lambda dans API Gateway](lambda-proxy-binary-media.md).

Si vous utilisez une intégration de proxy Lambda avec le streaming de réponse à la charge utile, vous n'avez pas besoin de configurer vos types de supports binaires. Pour de plus amples informations, veuillez consulter [Configurer une intégration de proxy Lambda avec le streaming des réponses de charge utile dans API Gateway](response-transfer-mode-lambda.md).

## Intégrations autres que de proxy
<a name="api-gateway-payload-encodings-non-proxy"></a>

Pour gérer les charges utiles binaires pour les intégrations sans proxy, vous devez ajouter les types de média à la [binaryMediaTypes](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html#apigw-Type-RestApi-binaryMediaTypes)liste de la ressource. `RestApi` La configuration `binaryMediaTypes` de votre API est une liste de types de contenu que votre API traite comme des données binaires. [Vous pouvez également définir les propriétés [ContentHandling](https://docs.aws.amazon.com/apigateway/latest/api/API_Integration.html#contentHandling) sur l'intégration et les ressources. [IntegrationResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_IntegrationResponse.html)](https://docs.aws.amazon.com/apigateway/latest/api/API_Integration.html) La valeur `contentHandling` peut être `CONVERT_TO_BINARY`, `CONVERT_TO_TEXT` ou indéfinie. 

**Note**  
Pour les intégrations `MOCK` ou privées, la définition des propriétés `contentHandling` n’est pas prise en charge dans la AWS Management Console. Vous devez utiliser le AWS CLI CloudFormation, ou un SDK pour définir les `contentHandling` propriétés.

Selon la valeur de `contentHandling` et si l’en-tête `Content-Type` de la réponse ou l’en-tête `Accept` de la demande entrante correspond à une entrée de la liste `binaryMediaTypes`, API Gateway peut encoder les octets binaires bruts sous forme de chaîne codée en base64, décoder une chaîne codée en base64 pour obtenir les octets bruts ou passer le corps sans modification. 

Vous devez configurer l’API comme suit pour prendre en charge les charges utiles binaires de votre API API Gateway : 
+ Ajoutez les types de supports binaires souhaités à la `binaryMediaTypes` liste de la [RestApi](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html)ressource. Si cette propriété et la propriété `contentHandling` ne sont pas définies, les charges utiles sont traitées en tant que chaînes JSON codées UTF-8.
+ Adressez la propriété `contentHandling` de la ressource [Integration](https://docs.aws.amazon.com/apigateway/latest/api/API_Integration.html). 
  + Pour que la charge utile de la demande soit convertie d’une chaîne codée en Base64 en son blob binaire, définissez la propriété sur `CONVERT_TO_BINARY`.
  + Pour que la charge utile de la demande soit convertie d’un blob binaire en une chaîne codée en Base64, définissez la propriété sur `CONVERT_TO_TEXT`.
  + Pour transmettre la charge utile sans modification, laissez la propriété indéfinie. Pour transmettre une charge utile binaire sans modification, vous devez également vous assurer que `Content-Type` correspond à l’une des entrées `binaryMediaTypes` et que les [comportements de transmission](integration-passthrough-behaviors.md) sont activés pour l’API. 
+ Définissez la `contentHandling` propriété de la [IntegrationResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_IntegrationResponse.html)ressource. La propriété `contentHandling`, l’en-tête `Accept` dans les demandes client et les `binaryMediaTypes` de vos API déterminent la façon dont API Gateway gère les conversions de type de contenu. Pour en savoir plus, consultez [Conversions du type de contenu dans API Gateway](api-gateway-payload-encodings-workflow.md). 

**Important**  
Lorsqu'une demande contient plusieurs types de support dans son en-tête `Accept`, API Gateway respecte uniquement le premier type de support `Accept`. Si vous ne pouvez pas contrôler l'ordre des types de support `Accept` et si le type de support de votre contenu binaire n'est pas le premier de la liste, ajoutez le premier type de support `Accept` dans la liste `binaryMediaTypes` de votre API. API Gateway gère tous les types de contenu de cette liste sous forme binaire.   
Par exemple, pour envoyer un fichier JPEG en utilisant un élément `<img>` dans un navigateur, ce dernier peut envoyer `Accept:image/webp,image/*,*/*;q=0.8` dans une demande. Si vous ajoutez `image/webp` à la liste `binaryMediaTypes`, le point de terminaison reçoit le fichier JPEG sous forme binaire. 

Pour plus d’informations sur la façon dont API Gateway gère les charges utiles textuelles et binaires, consultez [Conversions du type de contenu dans API Gateway](api-gateway-payload-encodings-workflow.md).