2016-09-12 2 views
10

Wir haben eine Anwendung entwickelt, die mehrere Restdienste bietet und Accept-Encoding Header unterstützt, um komprimierten Inhalt durch Content-Encoding:gzip Header-Wert zurückzugeben.Zurückgeben von entpacktem Inhalt mit AWS API Gateway

Diese Anwendung wird auf ec2-Instanzen auf aws bereitgestellt, und wenn wir eine Anfrage mit Accept-Encoding Wert senden, wird die Antwort korrekt erstellt.

Wir möchten diese API mit dem API-Gateway verfügbar machen, aber sie funktioniert nur, um Anfragen nicht zu komprimieren. Wenn wir eine Anfrage senden, in der um entpackten Inhalt gebeten wird, wird der Header richtig gesetzt, aber der Inhalt der Antwort ist beschädigt.

Müssen spezielle Parameter oder Konfigurationen in den Antwort- oder Methodenreaktionsschritten der Integration festgelegt werden?

Grüße.

Antwort

1

Seit dem 19. Dezember 2017. AWS API-Gateway hat kodiert Unterstützung hinzuzufügen.

Nachdem die API erstellt wurde, gehen Sie einfach zu Einstellungen und wählen Sie Content Encoding Enable.

See example

Auch ist here die offizielle Freigabe Post AWS.

9

Leider unterstützt das API-Gateway derzeit keine HTTP-Komprimierung. Es ist jedoch in Erwägung für die zukünftige Entwicklung.

Jetzt müssen Sie unkomprimierten Inhalt von Ihrem Endpunkt zurückgeben (d. H. Accept-Encoding-Header weglassen), um ihn über das API-Gateway zu proxygrafieren.

Wenn es für Ihren Anwendungsfall funktioniert, können Sie den komprimierten Inhalt alternativ base64 kodieren, über das API Gateway proxy-encodieren und auf dem Client dekodieren.

Danke, Ryan

4

nur eine Abhilfe, aber if you set Accept-Encoding: identity you should receive the result correctly (im Gegensatz zu der verknüpften Diskussion, die ich es für POST und GET funktioniert gefunden haben).

+2

Nachdem ich stundenlang meine Haare ausgezogen habe, kann ich bestätigen, dass dieses obskure Stück funktioniert. Mit diesem Problem mit GZipping und herumalbern mit der Arbeit von CORS war es ein Albtraum, sich einzurichten. Ich bin mir sicher, dass Tausende meine Ausdauer nicht hatten und einfach aufgegeben haben. Holen Sie sich zusammen Amazon. – Lobos

+0

@Lobos Das gleiche hier, ich habe jetzt mit dem Setup für 2 Tage gekämpft. Es war ein Albtraum. –

+0

Update: Ich habe aufgegeben. –

0

Um GZipped-Inhalte vom HTTP-Proxy-Endpunkt zuzulassen, können Sie */* in "Binäre Medientypen" im Abschnitt "Binäre Unterstützung" Ihrer API hinzufügen.

+0

Zitate aus einer anderen Quelle müssen korrekt zugeordnet und als * Text * formatiert werden, keine Screenshots. –

1

Ich habe es von Accept-Encoding AWS API-Gateway Hinzufügen arbeiten Integration Request

Schritt 1: Zum AWS API Gateway-Konsole, klicken Sie auf Integration Request enter image description here

Schritt 2: hinzufügen Accept-Encoding zu HTTP Headers Abschnitt, Wert 'identity' (brauchen einfache Anführungszeichen)

Schritt 3: Click Actions ->Deploy API

Wenn Sie AWS CloudFormation verwenden, können Sie yaml Integration: RequestParameters: integration.request.header.Accept-Encoding: "'identity'

Verwandte Themen