首页 文章

如何在aws api网关中正确使用集成响应映射来返回不同的http代码

提问于
浏览
2

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

enter image description here

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

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

2 回答

  • 0

    如果您使用的是Java,则需要 throw 例外 . 我错误地尝试了 return 错误信息 . Lambda Error Regex解析Exception消息,所以如果你抛出这个:

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

    并将 foo.* 替换为 Failed: .* ,它将使用400状态代码 .

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

  • 5
    .*"Failed:".*
    

    这是Lambda Regex的正确语法 . 此外,在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));

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

相关问题