Anda di halaman 1dari 5

Nama : Ni Putu F. C. A.

Putri
Nim : 2116001
Mata kuliah : Web Service (A)

HTTP, sebagai protokol yang menggunakan request dan response menjadikan aplikasi
web bergantung kepada siklus ini untuk menghasilkan dokumen yang ingin diakses oleh
pengguna. Aplikasi web yang kita kembangkan harus memiliki satu cara untuk membaca
HTTP Request dan mengembalikan HTTP Response ke pengguna. Untuk menambahkan
aplikasi web kita kemudian menggunakan penghubung antar web server dengan program yang
dikenal dengan nama CGI (Common Gateway Interface). CGI diimplementasikan pada web
server sebagai antarmuka penghubung antara web server dengan program yang akan
menghasilkan konten secara dinamis.
Berikut ini merupakan proses request dan response :
1. HTTP Request.
HTTP Request dihasilkan dari http.Server, dan merupakan objek http.IncomingMessage.
Objek http.IncomingMessage merupakan objek yang unik, karena objek ini dapat dihasilkan
oleh dua buah fungsi, dan masing-masing fungsi akan memberikan property yang berbeda
kepada objek. Sebagai hasil keluaran dari http.Server, objek http.IncomingMessage memiliki
beberapa property yang perlu ditelaah, yaitu:
IncomingMessage.method Mengambil method(GET,
POST, dst) sebagai string.

IncomingMessage.url URL Request sebagai string


(contoh: /user/jwz)

IncomingMessage.headers Sebuah objek yang read


only (tidak dapat diubah).
Dari ketiga property diatas memiliki kegunaan masing-masing yang membantu dalam
pengembangan aplikasi web. Akses dari masing-masing property dapat langsung dilakukan
dari objek yang diberikan oleh http.server.createServer, seperti berikut:
1

2
var http = require('http');
3 var port = process.env.port || 1337;
4
var onRequest = function (request, response) {
5
console.log(request.headers);
6 };
7
var server = http.createServer(onRequest);
8 server.listen(port, 'localhost');
9

Jika menjalankan kode di atas dan mengunjungi halaman pada http://localhost:1337/ maka kita
akan melihat cetakan JSON pada console seperti berikut:
1 {
2 host: 'localhost:1337',
3 connection: 'keep-alive',
4 accept: '*/*',
5 'user-agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/41.0.2
6 'accept-encoding': 'gzip, deflate, sdch',
7 'accept-language': 'id,en;q=0.8,en-US;q=0.6',
8 cookie: 'thelia_cart=546c25890d8bc7.53190152',
9 }

• Pembacaan data dari HTTP request.


Data dikirimkan dalam HTTP Request dalam dua cara, tergantung dari method yang
dikirimkan:

1. Melalui URL, dengan parameter yang diberikan. Digunakan oleh GET.


2. Melalui entity body dalam HTTP Request. Digunakan untuk POST dan PUT

• Pembacaan Data dalam Entity Body


Beberapa method lain di luar GET mengirimkan data melalui entity body dari sebuah
HTTP Request. Untuk mengakses data yang dikirimka, kita dapat
melakukan buffering data ke dalam sebuah string. Pada NodeJS, data ini dapat dibaca
melalui event data di dalam objek http.IncomingMessage. Ketika seluruh data telah
selesai dibaca, maka event end akan dieksekusi. Berikut adalah contoh kode untuk
pembacaan data:

1 var data = '';


2 request.on('data', function (chunck) {
3 data = data + chucnk;
4 });
5
6 request.on('end', function () {
7 // lakukan sesuatu terhadap variabel data
8 // yang sudah lengkap
9 });
2. HTTP Response
HTTP Response yang diberikan oleh server NodeJS merupakan objek
bertipe http.ServerResponse, yang juga mengimplementasikan antarmuka stream.
Writable(dokumentasi stream.Writable). Karenanya, penulisan HTTP Response akan
menggunakan konsep penulisan stream yang sama dengan bahasa pemrograman pada
umumnya.
Secara sederhana, untuk menuliskan data dengan stream.Writable, kita akan
melakukan dua hal berurutan:

1. Menulis stream dengan memanggil fungsi stream.Writable.write. Fungsi menerima


dua parameter, yaitu string yang akan ditulis dan encodingdari string yang
digunakan.
2. Menutup stream dengan memanggil fungsi stream.Writable.end. Fungsi tidak
menerima parameter.

Pada sebuah kode server sederhana, penulisan respon akan dilakukan seperti berikut:

1 var http = require("http");


2 var port = process.env.port || 1337;
3
4 var server = http.createServer(function(request, response) {
5 response.write("Hello World");
6 response.end();
7 });
8
9 server.listen(port, 'localhost');

http.ServerResponsememiliki beberapa fungsi-fungsi tambahan, yaitu (semua fungsi di bawah


adalah untuk objek http.ServerResponse):

1. writeContinue, memberikan pesan HTTP/1.1100 Continue kepada client.


2. writeHead, menuliskan header dari HTTP Response kepada client. Menerima tiga buah
argumen, yaitu sebuah angka kode status, string deskripsi status, dan objek header.
Contoh penggunaan dapat dilihat pada kode di bawah (setelah daftar fungsi).
3. setHeader, mengisikan nilai sebuah header. Jika header telah dibuat
dengan writeHead atau setHeader sebelumnya maka nilai akan ditimpakan. Menerima
dua buah argumen, yaitu string nama header dan string nilai header.
4. getHeader, mengambil isi dari header (case insensitive) sebelum dikirimkan ke
pengguna. Menerima satu parameter, yaitu string nama header.
5. removeHeader, menghapus header yang telah dibuat sebelumnya.
6. addTrailers, menambahkan HTTP Trailing Header (header yang berada di
belakang message) kepada HTTP Response. Fungsi ini memiliki dua prasyarat: hanya
untuk pesan HTTP 1.1 dan pesan harus memiliki header Trailer. Jika kedua syarat tidak
terpenuhi, fungsi akan diabaikan. Menerima parameter berupa objek dengan format
seperti pada fungsi writeHead.

konstruksi headerHTTP dapat dilakukan dengan cukup mudah, hanya dengan


mengikuti urutan penulisan pesan, yaitu:

1. Panggil writeHeader untuk menuliskan HTTP Response Starting Line dan Header.
2. Panggil write untuk menuliskan entity body, jika diperlukan kita juga dapat
mengirimkan konten file dari sini.
3. Panggil end untk mengirimkan kepada pengguna.

kita dapat menggunakan modul fs untuk membaca file dan menuliskan kontennya seperti
berikut:
1 var fs = require('fs');
2 var file = fs.createReadStream('./index.html');
3 var content = '';
4
5 file.on('data', function (data) {
6 content += data;
7 });
8
9 file.on('end', function () {
10 result = content;
11
12 response.writeHead(200, 'OK', {
13 'Content-Type': 'text/html',
14 'Content-Length': result.length
15 });
16
17 response.write(result);
18 response.end();
19 });

Cara kerja HTTP request dan HTTP Response

Anda mungkin juga menyukai