截至2016年11月,我明白API網關現在支持二進制媒體類型。是否有可能從一個lambda代理返回壓縮的HTTP?AWS API網關壓縮響應
我有一個快速js應用程序需要返回壓縮輸出(從數據庫查詢),否則響應正文超過lambda響應正文限制。
謝謝!
截至2016年11月,我明白API網關現在支持二進制媒體類型。是否有可能從一個lambda代理返回壓縮的HTTP?AWS API網關壓縮響應
我有一個快速js應用程序需要返回壓縮輸出(從數據庫查詢),否則響應正文超過lambda響應正文限制。
謝謝!
您可以將base64編碼的字符串中的壓縮數據從Lambda返回到API網關。
然後,您可以在返回到客戶端之前使用二進制媒體類型功能將base64編碼的字符串轉換回二進制數據。
如果您希望強制API網關返回二進制數據而不是尊重accept頭,則可以通過CLI將集成響應中的contentHandling屬性設置爲CONVENT_TO_BINARY。
aws apigateway update-integration-response \
--rest-api-id <api-id> \
--resource-id <resource-id> \
--http-method GET \
--status-code 200 \
--patch-operations '[{"op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY"}]'
謝謝。因此,如果我有一個我使用gzip(content-type:application/json,content-encoding:gzip)的json字符串,並將其作爲base64編碼的字符串發送,則API Gateway將能夠將此轉換回二進制文件並傳遞給它我的客戶? – galacticpresident
API網關不會解壓縮您的數據並將其傳遞給您的客戶端。您的客戶需要知道如何處理gzip數據。 –
謝謝!我不得不破解在客戶端解碼/ ungzip的方式,但這工作。 – galacticpresident
不幸的是,API網關目前不支持HTTP壓縮。但是,這是考慮到未來的發展。並且不支持將來自Lambda的二進制輸出傳遞給API網關。 –