为什么此AWS Lambda函数返回JSON而不是HTML?

时间:2019-08-09 13:25:23

标签: python python-3.x amazon-web-services aws-lambda aws-api-gateway

我具有以下lambda函数以及一个API网关触发点:

def lambda_handler(event, context):
resp = {
    "statusCode": 200,
    "headers": {
        "Access-Control-Allow-Origin": "*",
    },
    "body": "Hello, World!"
}

return resp

当我导航到API端点时,我预计只会看到文本“ Hello,World!”。相反,我看到了整个JSON响应。如何更改此功能,以便它能解释标头和状态代码,而不是解释要在浏览器中呈现的内容?

4 个答案:

答案 0 :(得分:1)

假设您的API网关正在使用Lambda代理集成,只需将content-type: text/html添加到您的响应中即可。

答案 1 :(得分:1)

这是因为通过lambda函数配置lambda的方式。看起来它已配置为Lambda代理。如果要查看整个JSON作为输出,只需禁用Use Lambda Proxy integration。您可以在API Gateway控制台中找到此配置。

在API网关控制台中启用Use Lambda Proxy integration,以仅查看“ Hello,World!”。

答案 2 :(得分:0)

一个选项是使用此功能从API网关设置lambda代理集成选项。它只会把你送回你的身体。您可以快速设置。这是官方链接。 link

答案 3 :(得分:0)

Lambda和API Gateway不应用作返回HTML的Web服务器。他们甚至没有为此进行优化,这会浪费资源。

您应该做的是将HTML托管在其他地方,使用JavaScript与API通讯,获取动态数据,然后根据API响应操作HTML。

如果您希望采用无服务器的静态HTML托管方法,建议使用S3 + CloudFront