首页 > 解决方案 > 如何更改无服务器框架中响应标头的状态码?

问题描述

我想回复个人定义的状态码和一些标题。但我发现即使我将状态码更改为 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

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

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

标签: http-headersaws-lambdaserverless

解决方案


看起来你在标题中有一个嵌套对象。

参考文件,

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

希望能帮助到你。


推荐阅读