如何正确的使用合并响应映射在AWS API网关返回不同的HTTP代码
问题描述:
我似乎无法使用亚马逊的API网关如何正确的使用合并响应映射在AWS API网关返回不同的HTTP代码
我添加了一个合并响应设置我的错误合并响应但它不返回400错误,而是继续返回与
{
"errorMessage": "foose",
"errorType": "Error",
"stackTrace": [
"exports.handler (/var/task/index.js:11:19)"
]
}
答
如果您使用的是Java 200响应,你需要抛异常。我犯了错误,试图返回的错误信息。
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));
如果您没有正确设置响应映射。