我需要在API网关中进行哪些设置才能接受压缩的有效负载

问题描述 投票:0回答:2

我有一个客户端应用程序,它将压缩数据发送到 aws api 网关。数据是默认压缩的。请求头如下:
内容编码:deflate
内容类型:application/json

但我收到了 aws api 的响应: 响应代码:415,响应消息:不支持的媒体类型和响应正文

根据 aws 文档,AWS API Gateway 支持 deflate、gzip、身份内容编码。 我正在根据本文档收到来自 api getway 的响应。 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-make-request-with-compressed-payload.html

以下是我在 aws api 网关上进行的用于接受压缩有效负载的设置。如果我缺少任何设置或正确的设置组合,请纠正。

1。方法请求的请求正文包含: application/json 、 application/x-gzip 、 application/x-gzip-compressed 、 application/zlib 内容类型。
2. 在设置页面中禁用内容编码。这是为了压缩来自 api agetway 的响应消息。但就我而言,我想将压缩消息发送到 api 网关。如果与负载压缩有关,请纠正。
3. 设置页面中的二进制媒体类型:我尝试在此处添加 application/json、application/zlib 和其他一些内容类型。还尝试将通配符内容类型设置为 */*。
4. 通过勾选集成请求中的“使用 Lambda 代理集成”进行测试。还通过取消选中它并使用带有选项“请求正文传递:当没有定义模板时”的映射模板进行测试。

任何帮助将不胜感激。 :)

amazon-web-services
2个回答
0
投票

希望您已为 API 启用有效负载压缩。 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-enable-compression.html

您可以尝试添加以下内容吗

Accept: application/json
Content-Type: application/json

注意:API Gateway 收到请求时,会验证指定的 content-coding 是否受支持。然后,它尝试使用指定的内容编码解压缩有效负载。如果解压成功,它会将请求分派到集成端点。如果不支持指定的编码或者提供的负载未使用指定的编码进行压缩,API Gateway 将返回 415 不支持的媒体类型错误响应。如果错误发生在识别 API 和阶段之前的解压早期阶段,则不会将错误记录到 CloudWatch Logs。


0
投票

这是一个老问题,但我发现了这个并希望它可以帮助其他人: 您可以尝试添加“Content-Encoding:gzip” https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-make-request-with-compressed-payload.html

© www.soinside.com 2019 - 2024. All rights reserved.