AWS API Gateway和Python Lambda返回HTML

use*_*236 6 html python api amazon-web-services aws-api-gateway

我正在尝试使用API​​ GW从我的python lambda ftn返回一个网页。相反,我将页面嵌入到主体内的标签中,而不是返回值是整页(标头,主体等...不带pre>

任何建议我可能做错了

谢谢

小智 8

尝试:response_body ="<HTML><Title>Title</Title></HTML>"

最后:

return {
    "statusCode": 200,
    "body": response_body,
    "headers": {
        'Content-Type': 'text/html',
    }
}
Run Code Online (Sandbox Code Playgroud)

这只是 David Lin 答案的代码说明


Dav*_*Lin 6

<pre>您看到的标签是浏览器试图向您显示从服务器返回的文本。它不是Lambda函数返回的一部分。

要使其正常工作,您需要获取lambda函数,将响应HTTP标头设置为 Content-Type: 'text/html'

例如:

response = {
    "statusCode": 200,
    "body": content,
    "headers": {
        'Content-Type': 'text/html',
    }
}
Run Code Online (Sandbox Code Playgroud)


C.J*_*sch 5

您必须配置 API 网关以返回正确的 Content-Type。

  1. 从 API Gateway 单击您创建的 API
  2. 点击“方法响应”
  3. 展开 Method response status 200 行。单击“Add Header”并添加“Content-Type”条目。
  4. 通过单击“<- 方法执行”返回到您创建的 API
  5. 点击“集成响应”
  6. 展开方法响应状态 200 行
  7. 点击“添加映射模板”
  8. 为 Content-Type 键入不带引号的“text/html”,然后单击复选框按钮
  9. 在模板区域中输入 JsonPath,它将 lambda 函数返回的 json 部分映射到返回给客户端的内容。例如,$input.path('body')如果您的 json 是:

.

{
    "statusCode": 200,
    "body": "<html><body><h1>Test</h1></body></html>"
}
Run Code Online (Sandbox Code Playgroud)
  1. 请务必在测试前部署 API。

这是关于如何从 AWS Lambda 返回 html 的更详细的文章