Apa Perbedaan req.body, req.params, req.query pada NodeJS ?

Musliadi
2 min readJun 23, 2018

--

Pada artikel kali ini saya ingin berbagi tentang dasar-dasar nodejs. Ketika mempelajari bagaimana cara kerja dari sebuah web, maka kita menemukan bahwa ada istilah request dan response. Dimana request adalah permintaan dari client sedangkan response adalah pemberian respon ketika permintaan request dilakukan.

Nah asyiknya, pada pemrograman nodejs kita harus melakukan penanganan url, request, dan response secara manual. Tidak hanya pada nodejsnya framework seperti expressjs juga mengharuskan kita menangani request dan response secara manual.
Adapun langkah-langkah komunikasi server adalah :

  1. Memanggil web server yang telah disediakan NodeJS.
  2. Membaca URL yang ingin diakses pengguna, dan memanggil fungsi untuk memproses URL tersebut.
  3. Memproses HTTP Request dari client.
  4. Menghasilkan HTTP Response untuk client.

Pada dasarnya kedua parameter diatas (request,response) berasal dari http.createServersebuah http server yang disediakan oleh nodejs yang menangani komunikasi web (request,response). Ketika http.createServerdijalankan melalui permintaan request, maka fungsi ini memberikan dua parameter yaitu :

  1. request, yang merupakan instan dari http.IncomingMessage, mewakili HTTP Request yang dikirimkan pengguna. Sebuah koneksi bisa saja menghasilkan beberapa HTTP Request. Kita akan membahas bagian ini lebih jauh nantinya.
  2. response, instan dari http.ServerResponse, mewakili HTTP Response yang akan diberikan kepada pengguna.

Ketika kita melakukan permintaan (request) terkadang bisa jadi meminta, atau juga meminta sekaligus mengirim value ke server, baik itu melalui url, atau form (html). Nah pada kali ini kita akan membahas bagaimana mengirim dan mengambil value yang dikirim melalui reqest. Antara lain :

  1. req.query, contohnya ketika kita melakukan request terhadap url yang memiliki parameter dan nilai, misal http://localhost:3000/search?nama=kangmus&umur=16.
    Maka untuk menangkap value yang dikirim dari url tersebut pada nodejs/express caranya adalah :
router.get(‘/search’, function(req, res, next) {
var name = req.query.nama;
console.log(`nama : ${nama}`)
var age = req.query.umur;
console.log(`umur : ${age}`)
res.send(‘Request has parsed see console’);
});

2. req.params, req.params berfungsi untuk menangkap nilai yang dikirimkan melalui url yang mengirimkan nilai secara langsung tanpa key (lihat contoh url pertama) mislanya http://localhost:3000/search/kangmus/16. Maka untuk menangkap value yang dikirim dari url tersebut pada nodejs/express caranya adalah :

 router.get(‘/search/:nama/:umur’, function(req, res, next) {
var name = req.params.nama;
console.log(`Nama : ${nama}`)
var age = req.params.umur;
console.log(`umur : ${age}`)
res.send(‘Request has parsed see console’);
});

3. req.body, req.body berfungsi untuk menangkap nilai yang dikirimkan melalui form-html (interface), contoh :

<form action=”/search” method=”post”>
<input type=”text” nama=”nama” placeholder=”nama”>
<input type=”text” nama=”umur” placeholder=”umur”>
<button type=”submit”>Search</button>
</form>

untuk menggunakan req.body sendiri kita harus memanggil library body-parser. body-parser adalah library untuk menangani application/x-www-form-urlencoded (data json yang dikirim melalui form-html/interface). Sedangkan cara menggunakan librarynya sebagai berikut :

//memanggil library
var bodyParser = require(‘body-parser’);
//menggunakan library pada express
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

Setelah itu kita bisa menangkap data dari form-html dengan cara :

router.post(‘/search’, function(req, res, next) {
var name = req.body.nama;
console.log(`Nama : ${nama}`)
var age = req.body.umur;
console.log(`umur : ${age}`)
res.send(‘Request has parsed see console’);
});

Itulah tadi bagaimana cara penanganan atau menangkap data dari url maupun form-html (interface). semoga bermanfaat.

--

--

Musliadi

Back End Developer > JogjaCamp | Javascript Enthusiast