Panduan Lengkap Membangun API RESTful dengan Node.js dan MongoDB
Daftar Isi
1. Pengantar API RESTful
API RESTful adalah sebuah arsitektur yang memungkinkan komunikasi antara client dan server menggunakan protokol HTTP. REST (Representational State Transfer) menggunakan metode HTTP standar seperti GET, POST, PUT, DELETE untuk melakukan operasi CRUD (Create, Read, Update, Delete).
Dalam panduan ini, kita akan membangun API RESTful menggunakan Node.js sebagai backend dan MongoDB sebagai database NoSQL yang fleksibel dan scalable.

2. Persiapan Lingkungan Pengembangan
Sebelum memulai, pastikan Anda sudah menginstal beberapa tools berikut:
- Node.js (versi terbaru disarankan)
- npm atau yarn sebagai package manager
- MongoDB (bisa menggunakan MongoDB Atlas untuk cloud atau instalasi lokal)
- Editor kode seperti VSCode
- Postman untuk testing API

3. Membuat Proyek Node.js
Buat folder proyek baru dan inisialisasi proyek Node.js dengan perintah berikut:
mkdir api-node-mongodb
cd api-node-mongodb
npm init -y
Selanjutnya, install beberapa package yang dibutuhkan:
npm install express mongoose dotenv cors
Penjelasan singkat package:
- express : framework web untuk Node.js
- mongoose : ODM untuk MongoDB
- dotenv : mengelola variabel lingkungan
- cors : mengatur akses cross-origin

4. Struktur Proyek
Berikut struktur folder yang akan kita gunakan:
api-node-mongodb/
├── node_modules/
├── controllers/
│ └── userController.js
├── models/
│ └── userModel.js
├── routes/
│ └── userRoutes.js
├── .env
├── app.js
└── package.json
Penjelasan singkat:
- controllers/ : berisi logika bisnis API
- models/ : definisi schema MongoDB dengan Mongoose
- routes/ : definisi endpoint API
- .env : menyimpan variabel lingkungan seperti URI MongoDB
- app.js : file utama aplikasi

5. Koneksi ke MongoDB
Buat file
.env
di root proyek dan tambahkan variabel berikut:
MONGODB_URI=mongodb+srv://username:password@cluster0.mongodb.net/namaDatabase?retryWrites=true&w=majority
PORT=5000
Kemudian buat file
app.js
dan tambahkan kode berikut untuk menghubungkan ke MongoDB:
import express from 'express';
import mongoose from 'mongoose';
import dotenv from 'dotenv';
import cors from 'cors';
dotenv.config();
const app = express();
app.use(cors());
app.use(express.json());
mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log('MongoDB connected'))
.catch((err) => console.error('MongoDB connection error:', err));
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
Kode di atas menginisialisasi Express, mengaktifkan CORS dan JSON parsing, serta menghubungkan ke MongoDB menggunakan Mongoose.

6. Membuat Model dengan Mongoose
Buat file
models/userModel.js
dan definisikan schema User:
import mongoose from 'mongoose';
const userSchema = new mongoose.Schema({
name: {
type: String,
required: true,
trim: true,
},
email: {
type: String,
required: true,
unique: true,
lowercase: true,
},
password: {
type: String,
required: true,
},
}, {
timestamps: true,
});
const User = mongoose.model('User', userSchema);
export default User;
Schema ini mendefinisikan struktur data user dengan field name, email, dan password.

7. Membuat Route API
Buat file
routes/userRoutes.js
untuk mendefinisikan endpoint API user:
import express from 'express';
import {
getUsers,
getUserById,
createUser,
updateUser,
deleteUser,
} from '../controllers/userController.js';
const router = express.Router();
router.get('/', getUsers);
router.get('/:id', getUserById);
router.post('/', createUser);
router.put('/:id', updateUser);
router.delete('/:id', deleteUser);
export default router;
Kemudian import dan gunakan route ini di
app.js
:
import userRoutes from './routes/userRoutes.js';
app.use('/api/users', userRoutes);

8. Membuat Controller
Buat file
controllers/userController.js
dan tambahkan fungsi-fungsi berikut:
import User from '../models/userModel.js';
// Get all users
export const getUsers = async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
res.status(500).json({ message: error.message });
}
};
// Get user by ID
export const getUserById = async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) return res.status(404).json({ message: 'User tidak ditemukan' });
res.json(user);
} catch (error) {
res.status(500).json({ message: error.message });
}
};
// Create new user
export const createUser = async (req, res) => {
const { name, email, password } = req.body;
try {
const newUser = new User({ name, email, password });
const savedUser = await newUser.save();
res.status(201).json(savedUser);
} catch (error) {
res.status(400).json({ message: error.message });
}
};
// Update user
export const updateUser = async (req, res) => {
try {
const updatedUser = await User.findByIdAndUpdate(
req.params.id,
req.body,
{ new: true }
);
if (!updatedUser) return res.status(404).json({ message: 'User tidak ditemukan' });
res.json(updatedUser);
} catch (error) {
res.status(400).json({ message: error.message });
}
};
// Delete user
export const deleteUser = async (req, res) => {
try {
const deletedUser = await User.findByIdAndDelete(req.params.id);
if (!deletedUser) return res.status(404).json({ message: 'User tidak ditemukan' });
res.json({ message: 'User berhasil dihapus' });
} catch (error) {
res.status(500).json({ message: error.message });
}
};
Controller ini mengatur operasi CRUD untuk resource User.

9. Middleware dan Error Handling
Untuk menangani error dan request yang tidak ditemukan, tambahkan middleware berikut di
app.js
setelah route:
// Middleware untuk route tidak ditemukan
app.use((req, res, next) => {
res.status(404).json({ message: 'Route tidak ditemukan' });
});
// Middleware error handler
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ message: 'Terjadi kesalahan server' });
});
Middleware ini memastikan API memberikan response yang jelas saat terjadi error atau route tidak ditemukan.

10. Testing API dengan Postman
Gunakan Postman untuk menguji endpoint API yang sudah dibuat:
- GET /api/users - Mendapatkan daftar semua user
- GET /api/users/:id - Mendapatkan user berdasarkan ID
- POST /api/users - Membuat user baru (kirim JSON dengan name, email, password)
- PUT /api/users/:id - Mengupdate user berdasarkan ID
- DELETE /api/users/:id - Menghapus user berdasarkan ID

11. Deployment API
Setelah selesai pengembangan, Anda bisa melakukan deployment API ke platform seperti Heroku, Vercel, atau layanan cloud lainnya.
Langkah umum deployment:
- Push kode ke repository GitHub
- Hubungkan repository ke platform hosting (misal Heroku)
- Set variabel lingkungan (MONGODB_URI, PORT) di dashboard hosting
- Deploy dan jalankan aplikasi

12. Kesimpulan
Dalam panduan ini, Anda telah belajar cara membangun API RESTful menggunakan Node.js dan MongoDB secara lengkap mulai dari persiapan lingkungan, membuat proyek, struktur folder, koneksi database, membuat model, route, controller, middleware, testing, hingga deployment.
Dengan pemahaman ini, Anda dapat mengembangkan API yang scalable dan mudah dipelihara untuk berbagai kebutuhan aplikasi.
