AWS API Lambda 网关看不到正文

AWS API Gateway with Lambda not seeing the body

我有一个 Lambda 函数,它在直接执行时工作得很好。由于目前只是为了测试,它只读取请求 body 和 returns 响应中 children 之一的值:

exports.handler = async (event) => {

    const response = {
        "isBase64Encoded": false,
        "headers": {
            "Content-Type": "application/json"
        },
        "statusCode": 200,
        "body": event.body.maxNumber
    };
    return response;
};

但是,当我使用 AWS Api 网关从中创建一个 Api 时,出现了一种奇怪的行为。如果 Lambda 函数包含上述代码,则响应主体为空。但是,如果我将响应更改为 return 整个请求主体,而不是 child(在本例中为 maxNumber),它会执行 return。 无论如何,虽然 lambda 函数单独运行良好,但在 API 网关后面时,它似乎看不到请求主体的 children。

我创建了 HTTP 和 REST api,启用和不启用代理,但没有成功。也找不到任何专门抽样像我的案例(请求正文)的文档。 任何帮助将不胜感激。

对于 api 网关代理响应,正文应为字符串。

首先,您需要解析请求主体以获取 json 对象,在响应内部,您需要按如下所述对响应主体进行 strigify:

const body = JSON.parse(event.body);

const response = {
        "isBase64Encoded": false,
        "headers": {
            "Content-Type": "application/json"
        },
        "statusCode": 200,
        "body": JSON.stringify(body.maxNumber)
    };
    return response;