
Daftar Isi
banyak pengembang mengenal Nuxt.js sebagai framework frontend berbasis Vue. Namun, tahukah Anda bahwa Nuxt juga bisa digunakan sebagai backend untuk membuat API dan mengelola data server-side? Inilah yang membuat banyak pemula bingung—“Nuxt itu frontend atau backend?”—hingga ragu untuk memulai.
Mungkin Anda bertanya:
- “Apakah saya perlu Node.js Express terpisah?”
- “Bisakah Nuxt meng-handle database dan API?”
- “Bagaimana cara membuat backend langsung dari Nuxt?”
Tenang, artikel ini hadir untuk menjawab semua kebingungan itu.
Anda akan belajar bagaimana Nuxt 3 dengan Nitro Engine mampu bertindak sebagai backend ringan, membuat REST API, bahkan menghubungkan database—semuanya tanpa framework tambahan.
Di akhir artikel, Anda akan memahami:
- Cara kerja server-side di Nuxt
- Membuat API dengan server routes
- Contoh backend sederhana dalam Nuxt
- Kapan sebaiknya Nuxt dipakai sebagai backend
Apa Itu Backend dalam Nuxt.js?
Nuxt.js versi 3 dibekali Nitro Engine, yang memungkinkan Nuxt menjalankan fungsi server-side. Artinya, Anda dapat:
- Menangani request HTTP (
GET,POST, dll.) - Membuat endpoint API
- Mengakses database
- Menjalankan logic backend dalam folder
server/
Inilah alasan mengapa Nuxt kini bukan hanya framework frontend, tapi bisa menjadi Fullstack Framework.
1. Struktur Backend di Nuxt.js
Untuk menggunakan Nuxt sebagai backend, Anda harus memahami folder berikut:
| Folder | Fungsi |
|---|---|
/server/api | Tempat membuat API endpoint |
/server/routes | Routing backend custom |
/server/middleware | Middleware server-side |
/server/plugins | Inisiasi service (DB, Auth, dll.) |
2. Membuat API Endpoint di Nuxt (Tanpa Express)
Cukup buat file di dalam folder /server/api.
Contoh: server/api/hello.get.ts
export default defineEventHandler(() => {
return { message: 'Hello from Nuxt Backend!' }
})🔍 Akses di browser:
http://localhost:3000/api/hello3. API dengan Parameter (Contoh Dynamic Route)
Buat file: server/api/user/[id].get.ts
export default defineEventHandler((event) => {
const id = event.context.params.id
return { userId: id, status: 'User found' }
})Hasil:
http://localhost:3000/api/user/12
→ { "userId": "12", "status": "User found" }4. Menangani POST Request (Insert Data)
File: server/api/contact.post.ts
export default defineEventHandler(async (event) => {
const body = await readBody(event)
return { success: true, data: body }
})Kirim request melalui fetch atau form dari frontend.
5. Menghubungkan Database (Contoh Prisma/MySQL)
Gunakan plugin di /server/plugins/prisma.ts
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
export default defineNitroPlugin(() => prisma)Sekarang Nuxt bisa CRUD langsung seperti backend Express.
6. Kapan Tepatnya Nuxt Cocok untuk Backend?
| Cocok Dipakai Jika | Hindari Jika |
|---|---|
| Membuat proyek fullstack ringan (blog, portfolio, dashboard) | Backend skala besar (microservices kompleks) |
| Ingin API sederhana dalam satu project | Butuh performa tinggi + load balancing |
| Ingin cepat develop tanpa setup Express | Sistem dengan modul backend rumit |
Anda sudah tahu bahwa Nuxt bukan hanya frontend, tapi dapat menjadi solusi backend ringan dan fullstack modern. Anda bisa membuat API, mengelola data, hingga terhubung dengan database—semuanya dalam satu repo.
Ingin memperdalam topik ini?
👉 Baca juga: Cara Membuat REST API CRUD di Nuxt 3 dengan Prisma & MySQL
