无服务器框架中如何更改响应头的状态码?

时间:2018-09-19 21:20:53

标签: http-headers aws-lambda serverless

我想响应个人定义的状态码和一些标题。 但是我发现即使将状态码更改为201,状态码仍为200。而且我定义的标头不在标头中。

我的处理程序,例如:

function createResponse(status, header, body) {
return {
headers: Object.assign(header, {
  'Access-Control-Allow-Origin': '*',
  'Content-Type': 'application/json;charset=utf-8'
}),
statusCode: status,
body: JSON.stringify(body)
}
}
export const hello = async (event, context, cb) => { 
const rep = {
  message: 'v1.0',
  event: event
};
cb(null, createResponse(201, {}, rep));
return;
};

我使用serverless.yml,我的配置是:

functions:
  first:
    handler: handlers/first.hello
    events:
      - http:
          method: ANY
          path: first
          integration: lambda

如何检查正确的代码可以更改状态代码和响应头? 我还发现我的标头仍在响应正文中,如何在响应标头中添加我的标头部分?

如果您认为我的集成部分有问题,可以给我正确的配置示例吗?

1 个答案:

答案 0 :(得分:0)

好像您在标头中有一个嵌套对象。

参考文档

https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html

这是发送正确响应的正确示例代码,

exports.handler = function(event, context, callback) {
    console.log('Received event:', JSON.stringify(event, null, 2));
    var res ={
        "statusCode": 200,
        "headers": {
            "Content-Type": "*/*"
        }
    };
    res.body = "Hello, World !";
    callback(null, res);
};

希望有帮助。