有没有办法从API网关返回自定义错误对象和状态代码?我获得200状态。
var response = {
status: 400,
errors: [
{
code: "226",
message: "Password and password confirmation do not match."
}
]
}
context.done(JSON.stringify(response));
答案 0 :(得分:3)
如果您想要回复错误,则必须使用带有错误响应构造的成功回调。
如果您正在使用context.fail()回调,AWS将假定Lambda在技术上失败并使用API网关中存在的默认映射进行响应。
示例错误响应:
'use strict';
module.exports.hello = (event, context, callback) => {
const response = {
statusCode: 400,
body: JSON.stringify({
errors:[{
code: "226",
message:"Password confirmation do not match"
}]
}),
};
context.done(null, response);
};
答案 1 :(得分:1)
这样我可以更改API Gatway。我可以管理我的API响应,使用s-templates.json添加此代码库。
ValidationError":{
"selectionPattern": ".*ValidationError.*",
"statusCode": "400",
"responseParameters": {
"method.response.header.Access-Control-Allow-Headers": "'Content-
Type,X-Amz-Date,Authorization,X-Api-Key,Cache-Control,Token'",
"method.response.header.Access-Control-Allow-Methods": "'*'",
"method.response.header.Access-Control-Allow-Origin": "'*'"
},
"responseModels": {},
"responseTemplates": {
"application/json": "$input.path('$.errorMessage')"
}
}
这样我就可以使用400 statusCode和有效消息返回我的响应。
module.exports.handler = function(event, context) {
const validationError={
statsCode:"ValidationError",
section:"Login",
validationType:"emailConfirmation",
message:"Email is not confirmed",
otherInfo:"Would you like to get the email again?",
client:"web|ios|android"
}
context.done(null, response);
};