Developers often use Netlify Functions to handle serverless functions and generate dynamic content for their websites. By default, Netlify Functions return JSON data. However, there might be cases where you need to return HTML instead. In this blog post, we will guide you on how to return HTML from a Netlify function and provide an example for you to follow.

The Default Response Format

When you create a Netlify function, the default response format is JSON. Here’s an example of how a typical Netlify function response looks in JSON:

return {
  statusCode: 200,
  body: JSON.stringify({ message: 'Hello, World!' }),
};

In this case, the function returns a HTTP status code of 200 (indicating success) along with a JSON payload containing the message property.

Returning HTML

To return HTML content from a Netlify function, you need to make a few changes to the response object. Here’s an example of how to do it:

return {
  statusCode: 200,
  headers: {
    'Content-type': 'text/html; charset=UTF-8',
  },
  body: '<body style="background-color: black;"><h2 style="color: white; padding-top:200px; text-align: center; font-family: system-ui">Test</h2></body>',
};

Let’s break down the changes:

Adding Headers

In order to return HTML, you need to set the Content-type header to text/html. This informs the client that the response contains HTML content.

Updating the Body

Instead of returning a string directly in the body property, you should now include the complete HTML structure. In the example above, we have a simple HTML <body> element with a styled <h2> heading displaying the text “Test”. Feel free to modify this structure according to your needs.

Conclusion

By following the steps outlined in this blog post, you have learned how to return HTML content from a Netlify function. This can be useful for rendering dynamic pages, sending HTML emails, or any other use case that requires HTML response generation. Make sure to adapt the HTML structure and styling according to your specific requirements.

Tags: Netlify Functions, HTML response, Serverless functions