Lambda 格式错误的代理响应(未知原因)
Lambda malformed proxy response (Unknown reason)
可能有一个简单的解决方案,但我被卡住了。 API 网关调用我的 lambda 函数应该 return 我的 json 响应,但它给了我同样的“格式错误的代理响应”错误
我已经对响应进行了十几次修改,但据我所知,它没有任何问题吗?这与我从邮递员那里得到的回复相同 API。我在这里做错了什么?
以下屏幕截图是在 cloud9 中测试时的响应,但是当使用代理响应参数从 API 网关获取时,我收到“格式错误的代理响应”错误。
Response
{
"statusCode": 200,
"list": [
{
"id": 8000048,
"name": "ESTACAO DE SERVICO TETE",
"addr": "EN7, Bairro Samora Machel, Unidade Mpadue",
"lat": -16.195047,
"lon": 33.585467,
"amen": [
false,
false,
"",
false,
false,
false,
false,
false,
false,
"",
false,
false,
false,
false
],
"fuel": [
null,
null,
null,
null,
null
],
"loc": [
"Tete",
"Center",
"Mozambique",
"MZ"
]
}
]
}
您返回的响应无效。根据 documentation、
In Lambda proxy integration, API Gateway requires the backend Lambda
function to return output according to the following JSON format:
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headerName": "headerValue", ... },
"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },
"body": "..."
}
并非所有这些字段都是必需的,但您不能只是向响应中添加随机内容;相反,您应该将对象的字符串化版本设置为 body
字段,例如(使用我不知道的 js python)body: JSON.stringify(info)
或 body: JSON.stringify({ list: info })
很抱歉这个问题缺少信息,由于法律原因我无法分享所有内容。但最终解决方案是对 json 响应进行双重压缩。让我解释一下...
API 网关在将响应返回给客户端之前对其进行解压缩。因此,响应 lambda 中的事件不仅需要对响应进行字符串化,还需要对响应进行双重字符串化(或者我称之为压缩)。基本上,我不得不...
simplejson.dumps(response)
simplejson.dumps(response)
我不确定我是否理解正确,或者我是否使用了正确的术语,所以对这一切持保留态度。谢谢大家。
可能有一个简单的解决方案,但我被卡住了。 API 网关调用我的 lambda 函数应该 return 我的 json 响应,但它给了我同样的“格式错误的代理响应”错误
我已经对响应进行了十几次修改,但据我所知,它没有任何问题吗?这与我从邮递员那里得到的回复相同 API。我在这里做错了什么?
以下屏幕截图是在 cloud9 中测试时的响应,但是当使用代理响应参数从 API 网关获取时,我收到“格式错误的代理响应”错误。
Response
{
"statusCode": 200,
"list": [
{
"id": 8000048,
"name": "ESTACAO DE SERVICO TETE",
"addr": "EN7, Bairro Samora Machel, Unidade Mpadue",
"lat": -16.195047,
"lon": 33.585467,
"amen": [
false,
false,
"",
false,
false,
false,
false,
false,
false,
"",
false,
false,
false,
false
],
"fuel": [
null,
null,
null,
null,
null
],
"loc": [
"Tete",
"Center",
"Mozambique",
"MZ"
]
}
]
}
您返回的响应无效。根据 documentation、
In Lambda proxy integration, API Gateway requires the backend Lambda function to return output according to the following JSON format:
{ "isBase64Encoded": true|false, "statusCode": httpStatusCode, "headers": { "headerName": "headerValue", ... }, "multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... }, "body": "..." }
并非所有这些字段都是必需的,但您不能只是向响应中添加随机内容;相反,您应该将对象的字符串化版本设置为 body
字段,例如(使用我不知道的 js python)body: JSON.stringify(info)
或 body: JSON.stringify({ list: info })
很抱歉这个问题缺少信息,由于法律原因我无法分享所有内容。但最终解决方案是对 json 响应进行双重压缩。让我解释一下...
API 网关在将响应返回给客户端之前对其进行解压缩。因此,响应 lambda 中的事件不仅需要对响应进行字符串化,还需要对响应进行双重字符串化(或者我称之为压缩)。基本上,我不得不...
simplejson.dumps(response)
simplejson.dumps(response)
我不确定我是否理解正确,或者我是否使用了正确的术语,所以对这一切持保留态度。谢谢大家。