membuat & memahami webserver
buat file skrip namai webserver.js (simpan misal di folder latihan yang sudah kita buat) sbb. :
'use strict';
//method parse dari modul url dipakai untuk memecah url menjadi bagian pathname dan bagian query
const urlParse = require('url').parse;
//method stringify dari modul querystring dalam kasus ini dipakai untuk memformat tampilan obyek rekues headers & kueri url
const qsStringify = require('querystring').stringify;
//perlu modul http yang akan dipakai untuk membuat webserver
const http = require('http');
//create webserver
const webserver = http.createServer();
//jika client/browser mengakses webserver(berarti on 'request' event dipicu) maka fungsi rekuescb callback dipanggil/dieksekusi
function rekuesCB(rekues, respon){
//property statusCode dipakai untuk menentukan http status code respon
respon.statusCode = 200;
//method setHeader dipakai untuk menentukan key , value http header respon
respon.setHeader('Content-Type', 'text/html; charset=UTF-8');
//method write dipakai untuk menentukan bagian data yang akan dikirim ke klien/browser
//seperti perintah echo kalau di PHP
respon.write('<b>rekues method: </b>'+rekues.method+'<br>');
respon.write('<b>rekues url: </b>'+rekues.url+'<br>');
//mem- parse url menjadi bagian pathname (yang dipakai untuk routing) &
//bagian data kueri(yang akan diproses oleh fungsi handler yang ada di bagian routing)
const url = urlParse(rekues.url, true);
respon.write('<b>url pathname: </b>'+url.pathname+'<br>');
respon.write('<b>url kueri:</b><br>');
respon.write(decodeURIComponent(qsStringify(url.query, '<br>', ': ')));
respon.write('<br>');
respon.write('<b>rekues headers:</b><br>');
respon.write(decodeURIComponent(qsStringify(rekues.headers, '<br>', ': ')));
//method end dipakai untuk mengakhiri write(setelah respon.end tidak ada lagi respon.write)
respon.end();
}
//menautkan event http rekues dengan fungsi rekuesCB callback handler -nya
webserver.on('request', rekuesCB);
//pilih port lain, jika port 80 sudah dipakai oleh aplikasi lain
const PORT = 80;
//method listen dipakai untuk menjalankan webserver yang kita buat dengan PORT yang kita pilih
webserver.listen(PORT);
jalankan skrip dengan mengetikkan perintah di terminal(Command Prompt):
c:\Users\lenovo\nodejs\latihan>node webserver
kemudian Enter
buka browser dan akses: http://localhost/segment1/segment2?key1=val1&key2=val2&key3=val3
bagian - bagian url:
/segment1/segment2 adalah bagian pathname
key1=val1&key2=val2&key3=val3 adalah bagian querystring
coba akses localhost dengan mengubah - ubah nilai bagian pathname & bagian querystring -nya dan lihat hasilnya di browser
Semoga anda sudah bisa memahami cara mendapatkan data url(query & pathname) & http rekues headers yang dikirim klien/browser ke webserver
kode skrip di atas juga bisa dituliskan seperti ini:
'use strict';
const urlParse = require('url').parse;
const qsStringify = require('querystring').stringify;
const http = require('http');
const webserver = http.createServer(function(rekues, respon){
respon.writeHead(200, {'Content-Type': 'text/html; charset=UTF-8'});
const url = urlParse(rekues.url, true);
let echo = '<b>rekues method: </b>'+rekues.method+'<br>';
echo += '<b>rekues url: </b>'+rekues.url+'<br>';
echo += '<b>url pathname: </b>'+url.pathname+'<br>';
echo += '<b>url kueri:</b><br>';
echo += decodeURIComponent(qsStringify(url.query, '<br>', ': '))+'<br>';
echo += '<b>rekues headers:</b><br>';
echo += decodeURIComponent(qsStringify(rekues.headers, '<br>', ': '));
respon.end(echo);
});
const PORT = 80;
webserver.listen(PORT);
pembahasan selanjutnya mengenai routing
komen