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