Return HTML to browser from API Gateway using Lambda Proxy Integration

0

I have a Lambda function built and deployed which accepts a collection of data in the request, processes and returns an HTML string for presentation to the user's browser. I have the Lambda function working. the function is to be integrated with API gateway. The return to the user is represented as a JSON object.

the python code is

    return {
    "statusCode": 200,
    "body": userResponse
}

where userResponse would contain "<html>...<body>...</body></html>.

I have an API set up in API gateway, which is implemented using Lambda Proxy Integration. It appears all I can do is define a model, but no body mapping template.

When I submit my querystring to the API endpoint, I get a response displayed in my web browser which is the html text as in

<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta charset="utf-8" />
</head>
<body>
...
</body>
</html>

the html is not rendered by the browser.

If I save the file to my machine as an html file, it is correctly rendered in the browser.

So, how do I tell API gateway to return html to the web browser with Lambda proxy integration turned on? What does the Model look like? Where does the body mapping happen?

thanks

質問済み 5年前4331ビュー
1回答
1

If you add a content type header to your returned data it should render properly:

return {
"statusCode": 200,
"body": userResponse,
"headers": {"Content-Type": "text/html"}
}

回答済み 4年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ