如何为无服务器功能设置默认状态代码?

时间:2017-04-21 12:35:35

标签: aws-lambda serverless-framework

我正在使用无服务器将微服务部署到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

1 个答案:

答案 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);
    });


}

希望这会有所帮助。