我正在尝试从AWS API Gateway方法返回1px gif.
由于现在支持二进制数据,我使用以下"集成响应"映射返回image/gif:
$util.base64Decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")
Run Code Online (Sandbox Code Playgroud)
但是,当我在Chrome中查看此内容时,我会看到返回以下二进制文件:
代替:
任何人都可以帮助我理解为什么这是乱码和错误的长度?或者我能做些什么来返回正确的二进制文件?还有其他一些我总是可以返回这个1px gif而不使用base64Decode函数?
非常感谢,这给我带来了很大的痛苦!
编辑
这个变得陌生.看起来问题不在于base64Decode,而在于二进制的一般处理.我在这篇博客文章和Stack Overflow问题之后添加了一个Lambda后端(之前我正在使用Firehose).我按照本文档页面将图像设置为binaryMediaType .
这让我可以通过Gateway API从Lambda传递以下图像/ bmp像素,它可以正常工作:
exports.handler = function(event, context) {
var imageHex = "\x42\x4d\x3c\x00\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x06\x00\x00\x00\x27\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00";
context.done(null, { "body":imageHex });
};
Run Code Online (Sandbox Code Playgroud)
但是,以下代表图像/ png或图像/ gif的图像在通过时会出现乱码:
exports.handler = function(event, context) {
//var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x01\x44\x00\x3b";
//var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b";
var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b\x0a"
context.done(null, { "body":imageHex });
};
Run Code Online (Sandbox Code Playgroud)
这似乎与另一个Stack Overflow问题是同一个问题,但我希望这可以通过Gateway API二进制支持来解决.不幸的是,image/bmp对我的用例不起作用,因为它不能透明......
如果它可以帮助任何人,这是一个很好的工具,用于在base64和hex之间进行转换.
我已设置 AWS API Gateway 将请求传递到返回图像的服务。
当我在 UI 中使用“测试”功能时,日志显示方法响应中返回的 PNG 数据以及 `Content-Type=image/png:
但是,当您实际在浏览器中访问端点时,会Content-Type出现application/json. 我希望“测试”UI 的日志中显示的“方法响应标头”与实际返回的内容相匹配。
如何强制 API Gateway 将上游的 Content-Type(image/png在本例中,但在其他情况下更常见)返回给浏览器?
以下是 Swagger 2.0 语法中定义的端点:
"/format/{id}/image.png": {
"get": {
"tags": [],
"summary": "",
"deprecated": true,
"operationId": "get-png",
"produces": [
"image/png"
],
"parameters": [
{
"name": "id",
"in": "path",
"description": "My Description",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Successful operation",
"schema": {
"type": "file"
},
"headers": {
"Access-Control-Allow-Origin": {
"type": "string",
"description": …Run Code Online (Sandbox Code Playgroud) 我希望有人能提供帮助,我已经让AWS Lambda在context.succeed或context.fail中返回了一些XML,除了一小部分外,一切都很好.我回应了XML,但因为标题仍然存在Content-Type: application/json而我正在谈论的Twilio服务器正在查看并拒绝它,即使正文实际上是有效的XML.
有没有办法覆盖标题?
非常感谢.