我似乎无法使用 amazon api 网关为错误设置集成响应
我添加了一个集成响应,但它不返回 400 错误,而是继续返回 200 响应
{
"errorMessage": "foose",
"errorType": "Error",
"stackTrace": [
"exports.handler (/var/task/index.js:11:19)"
]
}
我似乎无法使用 amazon api 网关为错误设置集成响应
我添加了一个集成响应,但它不返回 400 错误,而是继续返回 200 响应
{
"errorMessage": "foose",
"errorType": "Error",
"stackTrace": [
"exports.handler (/var/task/index.js:11:19)"
]
}
如果您使用的是 Java,则需要抛出异常。我犯了试图返回错误信息的错误。Lambda 错误正则表达式解析异常消息,所以如果你抛出这个:
throw new Exception("Failed: Something bad happened!");
foo.*
并用它替换你的Failed: .*
将使用 400 状态代码。
如果您使用的是 NodeJS,则可以使用context.fail('Failed: Something bad happened!');
来获得相同的结果
.*"Failed:".*
这是 Lambda 正则表达式的正确语法。此外,在 nodeJS 中(根据您上面的示例),更容易构建自己的错误对象并添加状态以便于映射,例如:
var myError = {}
myError.status = "userError"; //use this for 400 and "serverError" for 500
myError.message = err.stackTrace; //message body
最后你需要返回
context.fail(JSON.stringify(myError));
如果您没有正确设置响应映射。