By using AWS re:Post, you agree to the Terms of Use

Return HTML to browser from API Gateway using Lambda Proxy Integration


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

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

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?


asked 4 years ago560 views
1 Answer

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"}

answered 3 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions