Di post sebelumnya kita sudah belajar cara parsing bermacam-macam data menggunakan nodejs. Silahkan baca-baca dulu post sebelumnya supaya tidak membingungkan. Pada post kali ini kita akan mempelajari cara parsing body request atau kita sebut dengan payload. Cara nya akan lebih kompleks jika kita bandingkan dengan cara parsing data yang sudah kita pelajari sebelumnya.
Sebelum kita mulai, kita buat terlebih dahulu sebuah file sederhana untuk mendefinisikan sebuah http server , index.js
, lalu copy paste skrip di bawah ini.
//gunakan module http var http = require("http"); //buat variabel server untuk handle request dan respon var server = http.createServer(function(request, respon) { }); //start server dan listening di port 3000 server.listen(3000, function() { console.log("server nyala dan listening di port 3000"); });
Parsing Body Request Dengan String decoder
Tambahkan library string_decoder pada index.js
. Library ini kita butuhkan untuk proses decoding data yang akan dikirim saat melakukan request ke http server.
var strDecoder = require("string_decoder").StringDecoder;
//gunakan char set utf-8 untuk proses decoding var decoder = new strDecoder('utf-8');
//tampung stream ke variabel dataStream var dataStream = '';
//kumpulkan data stream pada variabel dataStream request.on("data", function(data) { dataStream +=decoder.write(data); });
//hentikan pengumpulan stream pada event end request.on("end", function() { //pengumpulan stream dihentikan dataStream +=decoder.end(); //kirim data payload sebagai respon server respon.end(dataStream); });
index.js
akhirnya akan seperti di bawah ini.//gunakan module http var http = require("http"); var strDecoder = require("string_decoder").StringDecoder; //buat variabel server untuk handle request dan respon var server = http.createServer(function(request, respon) { //gunakan char set utf-8 untuk proses decoding var decoder = new strDecoder("utf-8"); //tampung stream ke variabel dataStream var dataStream = ""; //kumpulkan data stream pada variabel dataStream request.on("data", function(data) { dataStream += decoder.write(data); }); //hentikan pengumpulan stream pada event end request.on("end", function() { //pengumpulan stream dihentikan dataStream += decoder.end(); //kirim data payload sebagai respon server respon.end(dataStream); //console.log("payload : ", buffer); }); }); //start server dan listening di port 3000 server.listen(3000, function() { console.log("server nyala dan listening di port 3000"); });
Jalankan aplikasi dengan mengetik perintah berikut ini.
node index.js
Saatnya kita lakukan percobaan. Silahkan buka postman, masukan url http://localhost:3000
lalu pada bagian body pilih jenis raw lalu masukan beberapa buah kata pada input yang tersedia (bebas, hanya untuk testing saja).
Setelah itu klik tombol send, lalu lihat pada bagian output, jika berhasil maka akan tampil kalimat sesuai dengan kalimat yang kita kirim pada body request sebagai payload saat melakukan request ke http server.
Sebagai tambahan bacaan, untuk memahami apa itu http request dan lain sebagai nya. Silahkan menuju link-link di bawah ini.
https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html
https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages
Semoga bermanfaat…