Anda di halaman 1dari 8

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:

Untuk request seperti PUT yang biasanya dikirimkan dalam bentuk data langsung, misalnya:

PUT /data/1234 HTTP/1.1


[berbagai header]

<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
var http = require('http');
1
var port = process.env.port || 1337;
2

3
var onRequest = function (request, response) {
4
console.log(request.headers);
5
};
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.2272.89 Safari/537.3

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

Untuk request seperti PUT yang biasanya dikirimkan dalam bentuk data langsung, misalnya:

PUT /data/1234 HTTP/1.1


[berbagai header]

<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
 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 });

6 request.on('end', function () {

7 // lakukan sesuatu terhadap variabel data

8 // yang sudah lengkap

9 });

2. HTTP Response

Untuk request seperti PUT yang biasanya dikirimkan dalam bentuk data langsung, misalnya:

PUT /data/1234 HTTP/1.1


[berbagai header]

<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
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:

Untuk request seperti PUT yang biasanya dikirimkan dalam bentuk data langsung, misalnya:

PUT /data/1234 HTTP/1.1


[berbagai header]

<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
1 var http = require("http");

2 var port = process.env.port || 1337;

4 var server = http.createServer(function(request, response) {

5 response.write("Hello World");

6 response.end();

7 });

9 server.listen(port, 'localhost');

Untuk request seperti PUT yang biasanya dikirimkan dalam bentuk data langsung, misalnya:

PUT /data/1234 HTTP/1.1


[berbagai header]

<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
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.

Untuk request seperti PUT yang biasanya dikirimkan dalam bentuk data langsung, misalnya:

PUT /data/1234 HTTP/1.1


[berbagai header]

<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
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 = '';

5 file.on('data', function (data) {

6 content += data;

7 });

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 });

Untuk request seperti PUT yang biasanya dikirimkan dalam bentuk data langsung, misalnya:

PUT /data/1234 HTTP/1.1


[berbagai header]

<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
Untuk request seperti PUT yang biasanya dikirimkan dalam bentuk data langsung, misalnya:

PUT /data/1234 HTTP/1.1


[berbagai header]

<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>

Anda mungkin juga menyukai