如何正确的使用合并响应映射在AWS API网关返回不同的HTTP代码

问题描述:

我似乎无法使用亚马逊的API网关如何正确的使用合并响应映射在AWS API网关返回不同的HTTP代码

enter image description here

我添加了一个合并响应设置我的错误合并响应但它不返回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));

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