使用 Lambda 来自 API 网关的无服务器离线自定义错误
Serverless offline custom error from API gateway with Lambda
有什么方法可以从 API 网关 return 自定义错误对象和状态代码吗?我正在获得 200 状态。
var response = {
status: 400,
errors: [
{
code: "226",
message: "Password and password confirmation do not match."
}
]
}
context.done(JSON.stringify(response));
如果您想响应错误,则必须使用带有错误响应结构的成功回调。
如果您使用 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);
};
这样我就可以更改 API 网关。我可以管理我的 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')"
}
}
这样我 return 我的回复是 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);
};
有什么方法可以从 API 网关 return 自定义错误对象和状态代码吗?我正在获得 200 状态。
var response = {
status: 400,
errors: [
{
code: "226",
message: "Password and password confirmation do not match."
}
]
}
context.done(JSON.stringify(response));
如果您想响应错误,则必须使用带有错误响应结构的成功回调。
如果您使用 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);
};
这样我就可以更改 API 网关。我可以管理我的 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')"
}
}
这样我 return 我的回复是 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);
};