来自AWS Api网关的二进制数据

时间:2017-11-12 09:55:11

标签: amazon-web-services aws-lambda aws-api-gateway binary-data

我只是设置一个API网关(AWS)来返回二进制数据(image / png)。 我的API被读取并从lambda解码base 64成功,然后返回二进制数据,但它无法在我的浏览器上显示。 这是我的网关日志:

Api gateway's log

当我从邮递员那里请求时,它无法显示,响应是base64数据:

Image response

这个案子可以帮助我吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

当您从浏览器获取图像时,浏览器会将接受标头设置为Accept: image/webp,image/apng,image/*,*/*;q=0.8,并且API Gateway将仅从Accepts标头中选择第一个值。

如果第一个值与binaryMediaTypes中的模式匹配,API Gateway会将其视为二进制数据,因此它将从base64 String转换为二进制数据或传递二进制数据。

如果您没有根据客户端/浏览器的Accepts标头更改行为,您始终可以在集成响应上将contentHandling属性设置为CONVERT_TO_BINARY,然后API Gateway将忽略接受报头中。

我建议你可以将image/*放到API上的binaryMediaTypes中,然后重新部署API并在浏览器上再试一次。它应该作为二进制数据返回。

答案 1 :(得分:0)

您从api网关获得的数据是二进制数据。尝试将输出写入文件并保存。那应该是你的图像文件。

我正在使用相同的用例,但我在api-gateway中失败了。你能分享你的api网关代码吗?