13 votes

Comment renvoyer un contenu gzippé avec AWS API Gateway ?

Nous avons développé une application qui offre plusieurs services de repos et de soutien Accept-Encoding pour renvoyer le contenu compressé par l'intermédiaire de l'en-tête Content-Encoding:gzip valeur de l'en-tête.

Cette application est déployée sur des instances ec2 sur aws et lorsque nous envoyons une requête avec Accept-Encoding la réponse est correctement construite.

Nous voulons exposer cette api en utilisant une passerelle d'api mais cela ne fonctionne que parce que les requêtes ne sont pas compressées. Lorsque nous envoyons une requête demandant un contenu gzippé, la commande Content-Encoding est correctement défini mais le contenu de la réponse est corrompu.

Devons-nous définir un paramètre ou une configuration particulière dans la réponse d'intégration ou dans les étapes de la réponse de la méthode ?

Voir aussi.

9voto

RyanG-AWS Points 2012

Malheureusement, API Gateway ne prend pas actuellement en charge la compression HTTP. Cependant, elle est envisagée dans le cadre d'un développement futur.

Pour l'instant, vous devrez renvoyer un contenu non compressé à partir de votre point de terminaison (c'est-à-dire omettre l'en-tête Accept-Encoding) afin de l'acheminer par proxy via API Gateway.

Si cela convient à votre cas d'utilisation, vous pouvez également encoder en base64 le contenu compressé, l'acheminer par proxy via API Gateway et le décoder sur le client.

Merci, Ryan

6voto

Pablo Arias Mora Points 107

Depuis le 19 décembre 2017. AWS API Gateway prend en charge l'encodage.

Une fois l'API créée, il suffit d'aller dans Paramètres et de sélectionner Activer le codage du contenu.

See example

En outre aquí est l'annonce officielle de l'AWS.

5voto

Dan Gravell Points 2508

Ce n'est qu'une solution de contournement, mais si vous définissez Accept-Encoding: identity vous devriez recevoir le résultat correctement (contrairement à ce qui est dit dans la discussion, j'ai constaté que cela fonctionnait pour le POST). y GET).

2voto

ittus Points 5085

J'ai réussi à le faire fonctionner en ajoutant Accept-Encoding vers AWS API Gateway Integration Request

Étape 1 : Allez dans la console AWS API Gateway, cliquez sur Integration Request enter image description here

Étape 2 : Ajouter Accept-Encoding a HTTP Headers section, valeur 'identity' (il faut des guillemets simples) enter image description here

Étape 3 : Cliquez sur Actions -> Deploy API

Si vous utilisez AWS CloudFormation vous pouvez ajouter yaml Integration: RequestParameters: integration.request.header.Accept-Encoding: "'identity'

0voto

Amee Hirani Points 11

Pour autoriser le contenu GZipped à partir du point d'extrémité du proxy HTTP, vous pouvez ajouter */* dans "Binary media types" (types de médias binaires) dans la section "Binary Support" (support binaire) de votre API.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X