DEV Community

GreggHume
GreggHume

Posted on

Nuxt 2 dynamic sitemap with data from an api

You want to dynamically build your sitemap off some dataset / api then this is for you.

Whether you have express api enabled in your nuxt project or not, this easy 3 step process will get you there.

// nuxt.config.js
export default {
  serverMiddleware: [
    { path: "/sitemap.xml", handler: "~/api/sitemap/index.js" },
  ],
};
Enter fullscreen mode Exit fullscreen mode
// folder structure
root
└───pages
└───api
  └───sitemap
      │  index.js
Enter fullscreen mode Exit fullscreen mode
// api/sitemap/index.js
const app = require("express")();

app.all("/", (req, res) => {
  try {
    // you can loop through some data and build this up
    let sitemap = `
      <?xml version="1.0" encoding="UTF-8"?>
      <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <url>
          <loc>http://www.example.com/foo.html</loc>
          <lastmod>2018-06-04</lastmod>
        </url>
      </urlset>
    ` 

    res.set('Content-Type', 'text/html');
    res.status(200).send(Buffer.from(sitemap));
  } catch (error) {
    res.status(500).send(error.message)
  }
})

module.exports = app;
Enter fullscreen mode Exit fullscreen mode

Install express if you havent.

Visit your localhost site map route.

Top comments (0)