Server Web dengan Node

nodejs

Keberadaan Node sebagai server-side Javascript kian lama kian matang, dengan support ke banyak fitur seperti filesystem, network, hingga HTTP. Sebenarnya HTTP sudah lama disupport, tetapi mumpung belum dibahas di MooTuts, mari kita bahas caranya bikin aplikasi web di Node.

HTTP Server sederhana

Berbeda dengan pemrograman seperti PHP, dimana PHP compiler bekerja sama dengan web server (entah Apache, nginx, atau http server lain), di Node, kita dihadapkan dengan kenyataan bahwa tiap web app yang kita buat harus dengan http server, alias build sendiri.

Note: Node memang tidak disupport oleh Apache, sehingga Node tidak dapat dijalankan ‘di atas’ Apache. Namun untuk nginx, banyak yang menggunakan nginx sebagai reverse proxy untuk app Node (karena kita dapat jalankan beberapa aplikasi Node dalam satu server), namun web server tetap dibuat di Node.

Caranya cukup sederhana, berikut kode untuk membuat HTTP server:

var http = require("http");
var app = http.createServer(function (request, response)
{
    response.writeHead(200, { "Content-Type": "text/plain" });
    response.write("Halo semua");
    response.end();
});
app.listen(1337);
console.log("Node web server jalan di http://localhost:1337");

Apabila kode di atas disimpan sebagai ‘app.js’, kita bisa jalankan dengan memanggil perintah:

node app

Maka apabila perintah di atas sudah dijalankan, akan muncul log bahwa ‘Node web server jalan di http://localhost:1337‘. Anda bisa coba buka web browser dan bukalah alamat http://localhost:1337.

It's... ALIVE!
It’s… ALIVE!

Keren yak.. Selamat ya. *jabattanganerat*

Apa sih yang terjadi barusan?

Oke, kita runut satu-satu. Yang pertama, require itu menyertakan modul http yang super keren itu ke dalam aplikasi kita. Untuk keterangan yang lebih detil mengenai modul http ini, silahkan konsultasi dengan dokumentasi HTTP API.

Selanjutnya, kita buat server baru (http.createServer) dan simpan itu ke variable app, dimana di dalamnya kita olah callback function dengan dua parameter: request dan response. Kedua parameter ini yang kita pakai sebagai I/O pada aplikasi web kita.

Terakhir, kita suruh server untuk mendengarkan port 1337, sehingga kalian bisa akses ke http://localhost:1337 dan terlihat seperti hacker elit dihadapan teman-temanmu.

Sang request dan response

Jadi, request ini adalah permintaan atau rekues pengguna aplikasi web kita. Sementara response itu, ya adalah respon atau jawaban dari server. Respon bisa kita sertakan headers maupun konten pesan kita kepada pengguna. Ketika pengguna mengakses aplikasi web kita, server akan membuat rekues dan respon baru dan menjalankan kode yang kita buat di dalamnya.

Mari kita coba modifikasi kode kita untuk mengakses informasi lain seputar request ini:

var http = require("http");
var app = http.createServer(function (request, response)
{
    var info = "Request:n";
    info += "URL: " + request.url + "n";
    info += "Method: " + request.method + "n";
    info += "Headers: " + JSON.stringify(request.headers) + "n";

    response.writeHead(200, { "Content-Type": "text/plain" });
    response.write("Halo semuann");
    response.end(info);
});
app.listen(1337);
console.log("Node web server jalan di http://localhost:1337");

Coba kita matikan server kita (dengan Ctrl + C), jalankan ulang (node app), dan refresh browser kita.

Kalian bisa coba ubah URL menjadi sesuatu yang berbeda, seperti misalnya:
http://localhost:1337/tentang atau http://localhost:1337/mootuts-memang-keren. Apa yang terjadi? Hasil yang didapat sedikit berbeda namun pada dasarnya kurang-lebih sama karena kode yang kita buat tidak mengantisipasi URL yang berbeda-beda.

Picture 5

Halaman di aplikasi web Node

Jadi untuk membuat halaman yang berbeda-beda pada aplikasi web Node, seperti layaknya web pada umumnya, gimana caranya? Tentu kalian sudah paham dari contoh sebelum ini bahwa request.url dipakai untuk melihat alamat yang diminta pengguna.

Dari pemahaman itu, kita bisa buat struktur kendali (control structure, bro.. itu lho.. if-elseif-else atau switch) dengan memantau request.url ini. Kode aplikasi web kita modifikasi lagi seperti berikut:

var http = require("http");
var app = http.createServer(function (request, response)
{
    if ( request.url == "/" )
    {
        response.writeHead(200, { "Content-Type": "text/plain" });
        response.write("Halo semua");
        response.end();
    }
    else if ( request.url == "/about" )
    {
        response.writeHead(200, { "Content-Type": "text/plain" });
        response.write("Ini halaman tentang halaman ini.");
        response.end();
    }
    else
    {
        response.writeHead(404, { "Content-Type": "text/plain" });
        response.end("Halaman tidak ditemukan broooo.");
    }
});
app.listen(1337);
console.log("Node web server jalan di http://localhost:1337");

Jangan lupa untuk mematikan dan menghidupkan ulang server sebelum refresh browser untuk melihat hasilnya, ya.

Kalian sekarang bisa akses http://localhost:1337/ dan juga http://localhost:1337/about. Sementara apabila kita akses ke halaman yang tidak disediakan, akan tampil halaman 404 sesuai yang kita buat di kode.

NodeWebServer3

Keren, sekarang kalian sudah bisa bikin HTTP server dengan Node! *tepuktanganmembahana*

Gak puas, bro

Ya, memang dengan menggunakan modul HTTP aja, rada-rada repot sih kalau mau bikin aplikasi web yang super duper keren. Untuk itu, kalian simak kelanjutan dari post ini yang akan membahas caranya membuat aplikasi web menggunakan framework yang cukup nyeleb di kalangan developer Node, yaitu Express framework.

Stay tuned!

7 Replies to “Server Web dengan Node”

Comments are closed.