Cara Membuat REST API dengan Node.js dan Express
REST API merupakan salah satu teknologi penting dalam pengembangan aplikasi web modern. API memungkinkan frontend, mobile app, maupun aplikasi lain berkomunikasi dengan server dan bertukar data.
Pada tutorial ini, kita akan membuat REST API sederhana menggunakan Node.js dan Express untuk manajemen user. API akan dilengkapi fitur CRUD, autentikasi JWT, serta koneksi ke PostgreSQL.
Yang Akan Dibangun
Project ini akan memiliki beberapa fitur utama:
-
Menambahkan user
-
Melihat daftar user
-
Melihat detail user
-
Mengubah data user
-
Menghapus user
-
Autentikasi menggunakan JWT
-
Koneksi database PostgreSQL
-
Error handling terpusat
Prerequisites
Sebelum memulai, pastikan beberapa kebutuhan berikut sudah tersedia:
-
Node.js v18+
-
PostgreSQL yang sudah berjalan
-
Pemahaman dasar JavaScript
-
Terminal atau code editor seperti Visual Studio Code
Langkah 1 Setup Project
Buat direktori baru untuk project, kemudian masuk ke direktori tersebut dan inisialisasi npm.
npm init -y
Selanjutnya install dependencies yang dibutuhkan.
npm install express pg bcrypt jsonwebtoken dotenv
Untuk development, install Nodemon.
npm install -D nodemon
Express digunakan untuk membuat server dan routing, PostgreSQL untuk koneksi database, bcrypt untuk mengenkripsi password, jsonwebtoken untuk autentikasi, dan dotenv untuk mengelola environment variables.
Langkah 2 Struktur Folder
Gunakan struktur folder agar kode lebih terorganisir.
src/
├── routes/
├── controllers/
├── middleware/
├── models/
├── db.js
└── app.js
Struktur ini membantu memisahkan routing, business logic, middleware, dan akses database sehingga project lebih mudah dikembangkan dan dipelihara.
Langkah 3 Konfigurasi Database
Buat file src/db.js untuk membuat koneksi PostgreSQL menggunakan connection pool.
Gunakan environment variables untuk menyimpan informasi database seperti host, username, password, dan nama database.
Contohnya:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=rest_api
DB_USER=postgres
DB_PASSWORD=your_password
JWT_SECRET=your_secret_key
Hindari menyimpan kredensial database secara langsung di dalam source code karena dapat menimbulkan risiko keamanan.
Langkah 4 Membuat Routes dan Controllers
Buat file src/routes/users.js untuk mendefinisikan endpoint user.
Contoh endpoint yang dapat digunakan:
GET /api/users
GET /api/users/:id
POST /api/users
PUT /api/users/:id
DELETE /api/users/:id
Logic setiap endpoint sebaiknya ditempatkan di controller. Dengan pemisahan ini, file routes tetap sederhana dan business logic lebih mudah diuji serta dikembangkan.
Langkah 5 Membuat Autentikasi JWT
JSON Web Token atau JWT dapat digunakan untuk mengamankan endpoint tertentu.
Setelah user berhasil login, server menghasilkan token. Token tersebut kemudian dikirim oleh client pada request berikutnya.
Middleware JWT bertugas memverifikasi token dan menyimpan informasi user ke dalam request object.
Dengan begitu, endpoint tertentu hanya dapat diakses oleh user yang sudah terautentikasi.
Langkah 6 Menambahkan Validasi
Validasi diperlukan untuk memastikan data yang dikirim client sesuai dengan kebutuhan API.
Misalnya ketika membuat user, server perlu memastikan email memiliki format yang benar dan password memenuhi aturan yang ditentukan.
Validasi sebaiknya dipisahkan dari business logic agar kode tetap mudah dipelihara.
Langkah 7 Error Handling
Buat centralized error handler untuk menangani error dari berbagai bagian aplikasi.
Response error sebaiknya memiliki format yang konsisten sehingga frontend lebih mudah memprosesnya.
Jangan mengirimkan stack trace atau informasi sensitif kepada pengguna ketika aplikasi sudah berjalan di production.
Langkah 8 Testing API
Setelah REST API selesai dibuat, lakukan pengujian menggunakan tools seperti Postman atau Insomnia.
Uji setiap endpoint untuk memastikan:
-
Request diterima dengan benar
-
Response memiliki format yang sesuai
-
Validasi berjalan
-
JWT dapat diverifikasi
-
Error ditangani dengan baik
-
Operasi database berjalan sesuai kebutuhan
Deployment
Sebelum melakukan deployment, aplikasi dapat di-containerize menggunakan Docker agar environment lebih konsisten.
Buat juga file .env.example sebagai dokumentasi environment variables yang dibutuhkan tanpa menyertakan kredensial asli.
Tambahkan health check endpoint seperti:
GET /health
Endpoint tersebut dapat digunakan untuk memastikan server dan layanan utama masih berjalan.
Kesimpulan
Membuat REST API dengan Node.js, Express, dan PostgreSQL dapat menjadi langkah yang baik untuk memahami pengembangan backend modern.
Dengan struktur project yang rapi, autentikasi JWT, validasi, error handling, dan pengelolaan environment variables yang benar, API akan lebih aman, mudah dikembangkan, dan siap digunakan sebagai dasar aplikasi web maupun mobile.