Langsung ke konten utama

[Lv2] Fitur Server Nuxt 3: Server Routes dan Sitemap Dinamis

Fitur server Nitro di Nuxt 3 memungkinkan Anda membangun kapabilitas backend yang sadar SEO langsung dalam repository yang sama.


1. Fokus wawancara

  1. Server routes untuk logika backend yang aman
  2. Pembuatan sitemap dinamis
  3. Konfigurasi robots dan kontrol crawler

2. Server routes di Nuxt 3

Contoh pemetaan file:

  • server/api/products.ts -> /api/products
  • server/routes/health.ts -> /health

Use case umum:

  • Menyembunyikan API key privat
  • Menormalkan response pihak ketiga
  • Mengimplementasikan pola BFF untuk frontend
  • Menangani CORS dan validasi request
// server/api/weather.ts
export default defineEventHandler(async () => {
const config = useRuntimeConfig();
return await $fetch(`https://example-weather.com?key=${config.weatherApiKey}`);
});

3. Sitemap dinamis

Sitemap harus mencerminkan route yang saat ini terindeks.

// server/routes/sitemap.xml.ts
export default defineEventHandler(async (event) => {
setHeader(event, 'content-type', 'application/xml; charset=utf-8');
const urls = await getPublishedUrls();
const body = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${urls
.map((u) => `<url><loc>${u.loc}</loc><lastmod>${u.lastmod}</lastmod></url>`)
.join('')}
</urlset>`;
return body;
});

4. Strategi Robots.txt

Gunakan kebijakan robots yang sadar environment.

  • Production: izinkan indexing untuk halaman publik
  • Staging/test: blokir semua crawler
User-agent: *
Disallow: /admin
Sitemap: https://example.com/sitemap.xml

5. Praktik operasional terbaik

  • Cache response sitemap dengan TTL pendek
  • Validasi format XML di CI
  • Jaga canonical URL konsisten dengan sitemap
  • Pantau error crawl dan indexing di search console

Ringkasan siap wawancara

Saya menggunakan server routes Nuxt untuk menjaga secret tetap di server, menghasilkan output sitemap/robots dinamis, dan menyelaraskan kontrol crawler dengan environment serta kepemilikan route.