2

我似乎无法使用 amazon api 网关为错误设置集成响应

在此处输入图像描述

我添加了一个集成响应,但它不返回 400 错误,而是继续返回 200 响应

{
  "errorMessage": "foose",
  "errorType": "Error",
  "stackTrace": [
    "exports.handler (/var/task/index.js:11:19)"
  ]
}
4

2 回答 2

5

如果您使用的是 Java,则需要抛出异常。我犯了试图返回错误信息的错误。Lambda 错误正则表达式解析异常消息,所以如果你抛出这个:

throw new Exception("Failed: Something bad happened!");

foo.*并用它替换你的Failed: .*将使用 400 状态代码。


如果您使用的是 NodeJS,则可以使用context.fail('Failed: Something bad happened!');来获得相同的结果

于 2015-07-29T06:33:45.607 回答
0
.*"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));

如果您没有正确设置响应映射。

于 2016-08-04T09:48:56.007 回答