我尝试创建一个AWS API网关代理,它将传递任何HTTP谓词作为' GET'到目标服务器(因为它是出于特定目的而需要)。
文本和JSON文件的传输没有问题,但所有图像都被破坏了。
似乎API网关代理以某种方式截获并损坏了二进制/图像数据。
是否有一些特定配置允许我传递图像?
答案 0 :(得分:1)
此页面将帮助: 使用 API Gateway 控制台启用二进制支持 :https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-configure-with-console.html
答案 1 :(得分:0)
您必须将希望被视为二进制的MIME类型添加到API设置下的Binary Media Types列表中。
您还必须确保您的响应content-type
和请求accept
标头不冲突。
如果未定义contentHandling,并且响应的Content-Type标头和原始请求的Accept标头与binaryMediaTypes列表的条目匹配,则API Gateway会通过正文。当Content-Type标头和Accept标头相同时,会发生这种情况。否则,API Gateway会将响应主体转换为Accept标头中指定的类型。
答案 2 :(得分:-1)
从Lambda下载图像文件(image.jpg)作为二进制blob :
GET /v1/s3?key=image.jpg HTTP/1.1
Host: abcdefghi.execute-api.us-east-1.amazonaws.com
Content-Type: application/json
Accept: application/octet-stream
从Lambda下载图像文件(image.jpg)作为Base64编码的字符串,格式为作为JSON属性:
GET /v1/s3?key=image.jpg HTTP/1.1
Host: abcdefghi.execute-api.us-east-1.amazonaws.com
Content-Type: application/json
Accept: application/json
另请查看此AWS Blog Post