Membangun REST API Pertama Anda dengan NestJS: Dari Nol sampai Mahir
Dari terminal kosong sampai endpoint kustom yang jalan: memasang CLI Nest, membaca struktur proyek yang dihasilkan, dan bagaimana controller dan service membagi tugas di antara keduanya.

Pernah dengar NestJS dan penasaran kenapa banyak developer, terutama dari dunia Node.js, berbondong-bondong memakainya? Singkatnya, NestJS membawa struktur dan keteraturan ke pengembangan backend dengan TypeScript. Kalau Anda ingin mulai, artikel ini adalah panduan langkah demi langkah untuk membangun REST API pertama Anda.
Kita akan mulai dari instalasi sampai membuat endpoint kita sendiri. Langsung saja!
Satu catatan sebelum mulai: panduan ini mengacu pada NestJS 12, rilis terbaru saat ini (terbit Agustus 2026). Decorator dan perintah CLI di bawah tidak berubah dari versi sebelumnya — yang bergeser adalah syarat versi Node.js-nya.
Kenapa NestJS?
Sebelum mulai ngoding, ada baiknya tahu dulu apa yang membuat NestJS istimewa:
- Struktur yang Jelas: NestJS “memaksa” kita memakai arsitektur yang modular dan rapi (banyak terinspirasi dari Angular). Ini membuat proyek lebih mudah dirawat dan dikembangkan.
- TypeScript-first: dibangun sepenuhnya dengan TypeScript, jadi kita dapat static typing, autocompletion, dan kode yang lebih aman.
- Kuat & Fleksibel: di balik layar NestJS memakai HTTP framework yang sudah teruji seperti Express (default) atau Fastify. Jadi kita dapat ekosistem yang kaya sambil tetap menikmati arsitektur NestJS.
Cukup basa-basinya, mari siapkan perkakasnya!
✅ Prasyarat
Pastikan hal-hal berikut sudah terpasang di komputer Anda:
- Node.js: versi 20.11 atau lebih baru — itu yang diminta CLI NestJS 12, dan Node 16 maupun 18 sudah habis masa dukungannya. Cek punya Anda dengan node -v.
- NPM atau Yarn: package manager yang datang bersama Node.js.
- Code Editor: Visual Studio Code sangat direkomendasikan.
Sudah siap? Mari pasang CLI NestJS.
Langkah 1: Pasang CLI NestJS
NestJS punya Command Line Interface (CLI) yang sangat membantu untuk membuat proyek, module, controller, dan komponen lain dengan cepat. Buka terminal Anda dan jalankan perintah ini:
npm install -g @nestjs/cliPerintah di atas akan memasang CLI NestJS secara global di sistem Anda.
Langkah 2: Buat Proyek Baru
Setelah CLI terpasang, membuat proyek baru jadi gampang sekali. Masuk ke direktori kerja yang Anda inginkan, lalu jalankan:
nest new my-first-apiCLI akan menanyakan package manager mana yang ingin Anda pakai (npm, yarn, atau pnpm). Pilih salah satu, dan biarkan CLI bekerja membuatkan struktur proyeknya untuk Anda.
Setelah selesai, masuk ke direktori proyeknya:
cd my-first-apiKalau Anda buka folder proyeknya, strukturnya akan terlihat seperti ini:
src/
├── app.controller.spec.ts
├── app.controller.ts
├── app.module.ts
├── app.service.ts
└── main.ts- main.ts: titik masuk aplikasi kita. Di sinilah server NestJS diinisialisasi.
- app.module.ts: module utama yang mengorganisasi komponen-komponen aplikasi.
- app.controller.ts: penangan route. Menerima request dan mengembalikan response.
- app.service.ts: tempat logika bisnis.
Langkah 3: Jalankan Aplikasinya
Tanpa mengubah apa pun, kita sudah punya aplikasi yang bisa dijalankan. Untuk menjalankannya dalam mode development (dengan hot-reload), pakai perintah ini:
npm run start:devTunggu sebentar, dan Anda akan melihat log di terminal yang menandakan aplikasinya sudah berjalan, biasanya di port 3000.
Sekarang buka browser atau Postman Anda dan akses http://localhost:3000. Anda akan disambut pesan: Hello World!
Selamat! API pertama Anda sudah jalan! 🎉
Langkah 4: Memahami Alurnya: Controller & Service
Dari mana “Hello World!” itu datang? Mari kita bedah alurnya.
- Request Masuk: ketika Anda mengakses http://localhost:3000, sebuah request GET dikirim ke aplikasi.
- Controller Menanganinya: app.controller.ts menangani request ini. Lihat kodenya:
// src/app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}Decorator @Controller() menandai kelas ini sebagai controller. Decorator @Get() pada method getHello() berarti method ini akan menangani request GET ke path root (/).
3. Service yang Bekerja: controller tidak langsung memberi jawabannya sendiri. Ia memanggil method getHello() dari AppService. Ini praktik yang baik untuk memisahkan logika routing dari logika bisnis.
// src/app.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}Decorator @Injectable() menandai kelas ini supaya bisa di-inject ke komponen lain (seperti controller kita). Di sinilah “Hello World!” sebenarnya dibuat.
Langkah 5: Membuat Endpoint Kita Sendiri
Sekarang mari buat sesuatu yang lebih menarik. Kita akan membuat endpoint baru GET /greeting/:name yang memberikan sapaan personal.
1. Ubah Service (app.service.ts)
Tambahkan method baru untuk membuat pesan sapaannya.
// src/app.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
// Add this new method
getGreeting(name: string): string {
return `Hello, ${name}! Welcome to your first API.`;
}
}2. Ubah Controller (app.controller.ts)
Tambahkan method baru di controller untuk membuat route-nya dan memanggil method service yang baru kita buat.
// src/app.controller.ts
import { Controller, Get, Param } from '@nestjs/common'; // Don't forget to import Param
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
// Add this new method
@Get('greeting/:name')
sendGreeting(@Param('name') name: string): string {
return this.appService.getGreeting(name);
}
}Perhatikan:
- @Get('greeting/:name'): kita mendefinisikan route baru. Bagian :name adalah route parameter.
- @Param('name') name: string: kita pakai decorator @Param() untuk mengambil nilai route parameter name dan menaruhnya di variabel name, bertipe string.
3. Coba!
Simpan semua perubahan Anda. Development server akan otomatis restart. Sekarang buka browser atau Postman dan akses URL baru kita, misalnya:
http://localhost:3000/greeting/Budi
Anda akan mendapat response berikut:
Hello, Budi! Welcome to your first API.Coba ganti “Budi” dengan nama Anda sendiri dan lihat hasilnya!
Kesimpulan
Selamat! Anda sudah berhasil membuat proyek REST API sederhana dengan NestJS, memahami komponen dasarnya (Controller, Service, Module), bahkan membuat endpoint kustom dengan parameter.
Ini baru puncak gunung es dari apa yang bisa dilakukan NestJS. Langkah berikutnya yang bisa Anda jelajahi:
- Integrasi dengan database memakai TypeORM.
- Validasi input memakai Pipes.
- Membuat module baru untuk fitur yang berbeda.
- Menerapkan autentikasi dengan Guards.
Terus bereksperimen dan selamat ngoding! 👨💻👩💻


