Saya ingin kesalahan dari Lambda menjadi kesalahan 500 yang tepat, setelah melakukan banyak penelitian, muncul di bawah ini, yang berfungsi:
Di LAMBDA
Untuk tanggapan yang baik, saya kembali seperti di bawah ini:
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);
}
Untuk respon yang buruk, kembali seperti di bawah ini
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)));
}
Di API Gateway
Untuk METODE DAPATKAN, ucapkan GET dari / res1 / service1:
Through Method Response > Add Response, added 3 responses:
- 200
- 300
- 400
Kemudian,
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')
Sekarang, terbitkan / res1 / service1, tekan URL yang diterbitkan, yang terhubung ke lambda di atas
Menggunakan plugin chrome klien REST Lanjutan (atau Postman), Anda akan melihat kode http yang sesuai seperti kesalahan server (500) atau 400, alih-alih 200 kode tanggapan http untuk semua permintaan yang diberikan dalam "httpStatusCode".
Dari 'Dashboard' API, di API Gateway, kita bisa melihat kode status http seperti di bawah ini: