我只是设置一个API网关(AWS)来返回二进制数据(image / png)。 我的API被读取并从lambda解码base 64成功,然后返回二进制数据,但它无法在我的浏览器上显示。 这是我的网关日志:
当我从邮递员那里请求时,它无法显示,响应是base64数据:
这个案子可以帮助我吗? 谢谢!
答案 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网关代码吗?