Я хотів, щоб помилка від Lambda була правильною 500 помилка, після проведення багатьох досліджень, я придумав нижче, що працює:
На ЛАМБДА
Для гарної відповіді я повертаюсь, як показано нижче:
exports.handler = (event, context, callback) => {
// ..
var someData1 = {
data: {
httpStatusCode: 200,
details: [
{
prodId: "123",
prodName: "Product 1"
},
{
"more": "213",
"moreDetails": "Product 2"
}
]
}
};
return callback(null, someData1);
}
За погану відповідь повертаємось, як показано нижче
exports.handler = (event, context, callback) => {
// ..
var someError1 = {
error: {
httpStatusCode: 500,
details: [
{
code: "ProductNotFound",
message: "Product not found in Cart",
description: "Product should be present after checkout, but not found in Cart",
source: "/data/attributes/product"
},
{
code: "PasswordConfirmPasswordDoesntMatch",
message: "Password and password confirmation do not match.",
description: "Password and password confirmation must match for registration to succeed.",
source: "/data/attributes/password",
}
]
}
};
return callback(new Error(JSON.stringify(someError1)));
}
На шлюзі API
Щоб отримати МЕТОД, скажіть GET of / res1 / service1:
Through Method Response > Add Response, added 3 responses:
- 200
- 300
- 400
Тоді,
Through 'Integration Response' > 'Add integration response', create a Regex for 400 errors (client error):
Lambda Error Regex .*"httpStatusCode":.*4.*
'Body Mapping Templates' > Add mapping template as:
Content-Type application/json
Template text box* $input.path('$.errorMessage')
Similarly, create a Regex for 500 errors (server error):
Lambda Error Regex .*"httpStatusCode":.*5.*
'Body Mapping Templates' > Add mapping template as:
Content-Type application/json
Template text box* $input.path('$.errorMessage')
Тепер, опублікуйте / res1 / service1, натисніть на опубліковану URL-адресу, підключену до лямбда
Використовуючи розширений клієнтський плагін REST (або поштар) chrome, ви побачите правильні коди http, такі як помилка сервера (500) або 400, а не 200 код відповіді http для всіх запитів, які були вказані в "httpStatusCode".
З "Інформаційної панелі" API в шлюзі API ми бачимо коди статусу http, як показано нижче: