我正在使用无服务器将微服务部署到AWS Lambda上。我想将默认状态代码设置为500,如果HTTP进程成功,那么我希望响应状态代码为200.如何执行此操作?可以通过serverless.yml
文件来完成吗?
功能:
addPermission:
handler: permissionadd.handler
events:
- http:
path: permission
method: post
cors: true
integration: lambda
request:
parameters:
querystrings:
companyId: true
userId: true
答案 0 :(得分:1)
我认为你不能通过serverless.yml来做到这一点。
你可以从这样的处理程序中做到这一点:
目前的情况是,任何和所有失败但未指定特定状态代码或未正确向API网关返回响应的lambda调用都被假定为Http状态500(内部服务器错误)。
但假设您想要返回自定义http代码,那么您可以使用以下内容:
module.exports.my_sample_func = (event, context, callback) ={
var processed_promise = process_your_event(event_body);
// define your default response to be returned
let my_default_response = {
statusCode:500, // add default faliure http code
body:JSON.stringify({error: "Some error occured"}),
headers: {
'Content-Type': 'application/json'
}
};
processed_promise.then(function(resolved, rejected){
// whatever had to be done got completed successfully
response.statusCode = 200;
response.body = JSON.stringify({msg: "Processed successfully"});
callback(null, response);
})
.catch(function(rejected){
callback(response);
});
}
希望这会有所帮助。