Routing adalah cara Express.js menentukan respon apa yang dikirim berdasarkan:
- URL yang diakses
- HTTP method (GET, POST, PUT, DELETE)
Tanpa routing yang jelas, aplikasi backend akan sulit dikembangkan dan rawan membingungkan. Routing yang rapi membuat alur aplikasi lebih mudah dipahami dan dipelihara.
Struktur Dasar Routing Express.js
Routing dasar menggunakan pola:
app.METHOD(PATH, HANDLER)
Contoh sederhana:
app.get("/", (req, res) => {
res.send("Halaman Utama");
});
Di sini:
GETadalah method/adalah path- handler adalah function yang dijalankan
Routing Berdasarkan HTTP Method
Express membedakan routing berdasarkan HTTP method.
app.get("/users", (req, res) => {
res.send("Menampilkan data user");
});
app.post("/users", (req, res) => {
res.send("Menambah user");
});
app.put("/users", (req, res) => {
res.send("Mengubah user");
});
app.delete("/users", (req, res) => {
res.send("Menghapus user");
});
Pendekatan ini umum digunakan dalam REST API.
Routing dengan Parameter URL
Routing bisa menerima parameter dinamis.
app.get("/users/:id", (req, res) => {
const userId = req.params.id;
res.send(`Detail user dengan ID ${userId}`);
});
Parameter ini sangat berguna untuk:
- detail data
- update data
- delete data
Routing dengan Query Parameter
Query parameter biasanya digunakan untuk filter atau pencarian.
app.get("/search", (req, res) => {
const keyword = req.query.q;
res.send(`Hasil pencarian untuk: ${keyword}`);
});
URL contoh:
/search?q=nodejs
Mengelompokkan Routing dengan Express Router
Agar kode lebih rapi, Express menyediakan Router.
Membuat Router
// routes/userRoutes.js
import express from "express";
const router = express.Router();
router.get("/", (req, res) => {
res.send("Daftar user");
});
router.get("/:id", (req, res) => {
res.send(`Detail user ${req.params.id}`);
});
export default router;
Menggunakan Router
// index.js
import express from "express";
import userRoutes from "./routes/userRoutes.js";
const app = express();
app.use("/users", userRoutes);
app.listen(3000);
Pendekatan ini sangat membantu saat aplikasi semakin besar.
Menangani Request Body pada Routing
Untuk menangani data dari client, gunakan middleware JSON.
app.use(express.json());
app.post("/login", (req, res) => {
const { username, password } = req.body;
res.json({
message: "Login berhasil",
username
});
});
Middleware memastikan data request bisa dibaca dengan benar.
Routing dengan Response JSON
Express memudahkan pengiriman response JSON.
app.get("/api/status", (req, res) => {
res.status(200).json({
status: "ok"
});
});
Pendekatan ini sangat umum untuk API backend.
Handling Route Not Found (404)
Route yang tidak ditemukan sebaiknya ditangani secara khusus.
app.use((req, res) => {
res.status(404).json({
message: "Route tidak ditemukan"
});
});
Ini membantu client mendapatkan respon yang jelas.
Contoh Praktik Routing Sederhana
import express from "express";
const app = express();
app.use(express.json());
app.get("/", (req, res) => {
res.send("Home");
});
app.get("/products", (req, res) => {
res.json(["Laptop", "Keyboard", "Mouse"]);
});
app.post("/products", (req, res) => {
const product = req.body;
res.json({
message: "Produk ditambahkan",
product
});
});
app.listen(3000);
Contoh ini mencakup routing dasar yang umum digunakan.
Kesalahan Umum dalam Routing Express.js
Beberapa kesalahan yang sering terjadi:
- menaruh semua route di satu file
- tidak menggunakan Router
- tidak menangani route 404
Routing yang rapi akan sangat membantu saat aplikasi berkembang.
Kesimpulan
Routing adalah inti dari aplikasi Express.js. Dengan routing yang baik, kita bisa:
- mengatur URL dengan jelas
- memisahkan logika aplikasi
- membangun API yang mudah dikembangkan
Bab ini menjadi fondasi sebelum masuk ke middleware lanjutan dan autentikasi.