首页 > 解决方案 > 即使 application/json 标头存在,lambda 函数中的 event.body 也不是对象

问题描述

我有一个使用 LAMBDA_PROXY 集成设置的 API Gateway / lambda 函数。我有一个 POST 资源,它在正文中发送一个 JSON 对象,如下所示:

{
    "version": 123,
    "attributes": [
        {
            "id": 1123,
            "type": "integer",
            "defaultValue": 88
        }
    ]
}

POST 请求与Content-Type: application/json标头一起发送。我希望 lambda 函数event.body作为对象接收,以便我能够像这样引用该对象:

const version = event.body.version;

事实上,这不起作用,我被迫JSON.parse()在 event.body 上运行。起初我认为内容类型标头没有到达 lambda,但后来我打印到日志event.headers中,标头实际上在那里:

{
    "Accept": "*/*",
    "content-type": "application/json",
    "Host": "jfpvip409c.execute-api.eu-west-1.amazonaws.com",
    "User-Agent": "curl/7.65.0",
    "X-Amzn-Trace-Id": "Root=1-5fe9940a-3f3634ce4ccd26f5211c21d1",
    "X-Forwarded-For": "192.118.35.111",
    "X-Forwarded-Port": "443",
    "X-Forwarded-Proto": "https"
}

有人可以帮我理解为什么会这样吗?

在此先感谢
nsteiner

标签: jsonaws-lambdahttp-headersaws-api-gateway

解决方案


推荐阅读