NodeJS Lesson-2 (HTTP - Create Server)

 Author : hadinug, 11 May, 2014, Komentar

nodejs lesson 2


Sebelumnya kita telah mempelajari bagaimana cara memanipulasi sebuah file atau folder dengan library FileSystem nodejs. Nah kali ini kita akan belajar bagai mana cara membuat aplikasi server dengan menggunakan library http


Dengan nodejs, kita bisa membuat sebuah aplikasi server sederhana maupun kompleks, dimana dalam prosesnya akan ada request dan response yang nantinya akan kita pelajari disini. Dan jangan lupa untuk mengunjungi situs resmi untuk dokumentasi API HTTP di http://nodejs.org/api/http.html



What do you get?

Seperti biasanya sebelum kita masuk ke tutorial, disini kami akan jabarkan apa yang nanti kamu dapatkan setelah membaca dan mempraktekan tutorial pada halaman ini:

  • Anda bisa membuat aplikasi createServer
  • Anda bisa membuat sebuah aplikasi web server yang mengakses file static
  • Anda bisa membuat sebuah aplikasi web server dengan menggunakan file configurasi JSON

createServer.js

Kita akan coba membuat sebuah aplikasi createServer.js, cara nya sama seperti pada tutorial sebelum nya dimana setiap lesson akan kita kelompokan dalam sebuah folder tersendiri.

Note: Kami berharap anda mengikuti tutorial nodejs ini dari awal, karna tutorial ini pada masing-masing lesson, saling ber kesinambungan satu dengan yang lain.

Sintak 

http.createServer([requestListener])

requestListener, berisi sebuah fungsi callback yang memiliki parameter request dan response. Masuk ke aplikasi, buat dalam folder http/ sebuah file createServer.js dan isikan kode berikut:


var http = require("http"); // load library http
var port = 1337;
var host = '127.0.0.1';
console.log('Starting...');
var server = http.createServer(function(request, result) {
    // display request data from server
    console.log('Receive request from server ' + request.url);
    // write header content-type
    result.writeHeader(200, {'Content-Type': 'text/plain'});
    result.end('Hello World');
});

server.listen(port,host,function(){
   console.log('Listen in '+host+':'+port); 
});


Secara sederhana, penulisan kode createServer.js diatas bisa lebih disederhanakan seperti berikut:

var http = require("http"); // load library http
var port = 1337;
var host = '127.0.0.1';
console.log('Starting...');
http.createServer(function(request, result) {
    // display request data from server
    console.log('Receive request from server ' + request.url);
    // write header content-type
    result.writeHeader(200, {'Content-Type': 'text/plain'});
    result.end('Hello World');
}).listen(port,host,function(){
   console.log('Listen in '+host+':'+port); 
});


Penjelasan Kode
  • require, digunakan untuk meload atau tampung librari nodejs, dalam hal ini adalah library http.
  • Definisikan variable port dan host yang nantinya akan kita gunakan untuk alamat yang bisa dijalankan di browser. 
  • Listen, digunakan sebagai fungsi untuk menjalankan aplikasi di browser.

Seperti yang dijelaskan diawal, ketika kita bermain dengan sebuah aplikasi server, maka akan ada request dan response pastinya. Nah dalam hal ini anda bisa coba menjalankan aplikasi createServer.js di console (CMD untuk window) dan jalankan dengan perintah berikut:

> node http/createServer.js

Setelah menekan tombol enter, anda akan melihat informasi yang mengatakan, bahwa aplikasi berjalan di 127.0.0.1:1337. Buka alamat tadi dibrowser anda dan lihat kembali di console, request yang dapat ditangkap oleh server.

Akses file static

Kali ini kita akan mengakses file html static yang sebelumnya kita sudah buatkan dalam folder http/static/. Di folder ini kita isikan 2 buah file html dengan hello.html dan world.html yang nantinya akan kita akses lewat browser. Pada folder http buat file javascript staticServer.js dan isikan kode berikut:

var http = require("http"); // load library http
var fs = require("fs");
var port = 1337;
var host = '127.0.0.1';
console.log('Starting...');
var server = http.createServer(function(request, result) {
        fs.readFile(__dirname+'/static/'+request.url, function(error,data){
            if(error){
                result.writeHeader(404, {'Content-Type': 'text/html'});
                result.end('Request page not found!');
            }else{ 
                result.writeHeader(200, {'Content-Type': 'text/html'});
                result.end(data);
            }
        });
});

server.listen(port,host,function(){
   console.log('Listen in '+host+':'+port); 
});


Penjelasan Kode

Jika pada contoh sebelumnya, halaman website kita isikan langsung dalan kode, nah kali ini kita coba untuk menampilkan halaman berdasarkan request atau permintaan yang di kirimkan lewat browser. Jalankan  script staticServer.js pada console, kemudian buka pada browser dengan alamat: 127.0.0.1:1337, anda akan mendapatkan halaman dengan pesan "page not found". Coba anda ketikan pada broser 127.0.0.1:1337/hello.html atau 127.0.0.1:1337/world.html maka isi filde hello.html dan world.html pada folder static akan ditampilkan di browser.

 
Ketika anda mengakses halaman http://127.0.0.1:1337/welcome.html, maka server akan merespon url yang anda kirimkan dengan mencocokan nama url [welcome.html] dengan file yang ada di folder static/. Jika ditemukan file dengan nama yang sama, makan isi file tersebut akan ditampilkan pada halaman website


Ketika anda mengakses halaman http://127.0.0.1:1337/hello.html, maka server akan merespon url yang anda kirimkan dengan mencocokan nama url [hello.html] dengan file yang ada di folder static/. Jika ditemukan file dengan nama yang sama, makan isi file tersebut akan ditampilkan pada halaman website


Jika anda mengisikan halaman selain yang diatas, maka pada halaman broeser akan ditampilkan informasi "page not found".

Mungkin anda bisa mencoba dengan mengubah kode diatas sesuai dengan keinginan anda, misalnya, jika halaman yang diminta adalah kosong ex: 127.0.0.1:1337 maka field index.html pada folder static yang akan diambil datanya dan ditampilkan diwebsite .

Menggunakan confugurasi file JSON

Nah jika ada sebuah kasus seperti ini misal. Sewaktu-waktu kita ingin merubah port atau host aplikasi server yang kita buat, dan program nya sangat kompleks, apakah kita akan mengubah satu-satu variable port atau host?, jelas ini sangat tidak bagus. Oleh karena itu kami menyarankan untuk sebuah informasi yang sifatnya sering digunakan, akan lebih baik disimpan dalam sebuah file configurasi. Agar sewaktu-waktu jika kita ingin mengubahnya, kita tidak perlu masuk ke kode program satu persatu. Cukup dengan mengubah satu file confignya saja :-).

Letakan file configurasi anda di file json, config.json dan isikan kode konfigurasi port dan host pada file config.json seperti berikut:

{
    "port": "1337",
    "host": "127.0.0.1"
}

Kemudian buat file dengan nama dinamicServer.js dan isikan kode berikut:

var http = require("http"); // load library http
var fs = require("fs");
// port and host, getting from file config.json
var config = JSON.parse(fs.readFileSync(__dirname+'/config.json'));
var port = config.port;
var host = config.host;
console.log('Starting...');

var server = http.createServer(function(request, result) {
        fs.readFile(__dirname+'/static/'+request.url, function(error,data){
            if(error){
                result.writeHeader(404, {'Content-Type': 'text/html'});
                result.end('Request page not found!');
            }else{ 
                result.writeHeader(200, {'Content-Type': 'text/html'});
                result.end(data);
            }
        });
});

server.listen(port,host,function(){
   console.log('Listen in '+host+':'+port); 
});

Yang menjadi fokus anda adalah, bagaimana mendapatkan nilai konfigurasi port dan host dari file config.json. Perhatikan kode berikut:

// port and host, getting from file config.json
var config = JSON.parse(fs.readFileSync(__dirname+'/config.json'));
var port = config.port;
var host = config.host;
console.log('Starting...');
Note: Json file config.js akan dibaca dengan library fileSystem, kemudian isinya akan di parsing oleh fungsi JSON.parse.

Jalankan kode javascript diatas dengan mengetikian perintah node http/dinamicServer.js, kemudian jalankan pada browser dan cobalah untuk mengubah port dan host di file config.json.

Anda bisa mencoba tutorial ini dengan langsung mendownload file nya pada link button dibawah ini


 
Bagikan halaman ke sosial media
 
Tags :   nodejs       

Tentang Penulis

writer hadinug
Web Developer di PT. Yafii Solusi Internasional

Link: http://ysi.co.id

   Komentar Anda