Middleware dan Request Response Cycle

Contoh middleware built-in express adalah pada modul sebelumnya kita menggunakan express.json, untuk parsing request.body.

Dapat dikatakan inti dari development express berdasarkan request response cycle dengan middleware diantaranya. Bahkan route sendiri adalah middleware.

Kumpulan middleware yang berada diantara request dan response disebut middleware stack. Urutan middleware dalam stack menentukan urutan eksekusi. Urutan ini sesuai dengan urutan saat kita mendeklarasikan middleware dalam program.

Setiap middleware harus memiliki perintah next(), untuk melanjutkan ke middleware berikutnya, hingga akhirnya dikirim oleh object response ke client.

Saat response dikirim ke client, maka cycle request response akan berakhir. Bila ada middleware yang didefinisikan setelahnya, tidak akan dieksekusi.

Sebagai developer, kita bisa membuat middleware sendiri juga, misalnya untuk melakukan validasi atau lainnya.

Membuat Middleware

Berikut contoh sederhana middleware yang menampilkan log ke console.

app.use((req, res, next) =>{
    console.log('Ini berasal dari middleware');
    next();
});

Gunakan method use untuk menambahkan middleware kedalam middleware stack. Penamaan parameter req, res dan next adalah bebas, namun sudah menjadi konvensi menggunakan nama parameter tersebut.

Perhatikan juga, diakhir middleware, perintah next() dipanggil. Perintah ini berfungsi mempasing data request dan response ke middleware berikutnya.

Pengaruh Posisi Middleware dalam Code

Silakan Anda berexperimen menempatkan middleware tersebut didalam program di file app.js.

Jika middleware diletakan seperti gambar diatas, maka setiap request response cycle terjadi, middleware akan selalu di eksekusi.

Jika middleware diletakan seperti gambar dibawah, maka

Jika routing dari request adalah ‘api/v1/tours’, middleware tidak pernah dieksekusi karena saat mencapai routing tersebut, request response cycle selesai. (Ada perintah res.send() dieksekusi, lihat fungsi getAllTours dan createTour).

Jika routing adalah ‘api/v1/tours/:id’, maka middleware akan dieksekusi, karena request response cycle belum berakhir.

Sharing is caring:

Leave a Comment