Volevo che un errore da Lambda fosse corretto 500, dopo aver fatto molte ricerche, ho trovato il seguente, che funziona:
Su LAMBDA
Per una buona risposta, torno come di seguito:
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);
}
Per una cattiva risposta, tornando come sotto
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)));
}
Su API Gateway
Per un METODO GET, dire GET of / res1 / service1:
Through Method Response > Add Response, added 3 responses:
- 200
- 300
- 400
Poi,
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')
Ora, pubblica / ris1 / servizio1, premi l'URL pubblicato, che è connesso a lambda sopra
Utilizzato il plug-in di Chrome del client REST avanzato (o Postman), vedrai i codici http corretti come l'errore del server (500) o 400, invece di 200 codici di risposta http per tutte le richieste in cui sono state fornite in "httpStatusCode".
Dalla "Dashboard" dell'API, in API Gateway, possiamo vedere i codici di stato http come di seguito: