Penjelasan tentang HTTP Request Method (GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE)

Topik-topik pengantar berikut akan dibahas dalam artikel ini:
Siklus hidup dari permintaan HTTP & respon.
Anatomi permintaan HTTP & respon.
HTTP Metode & praktik terbaik.
Penjelasan tentang HTTP Request Method

Gambar 1: HTTP Request / Response

Siklus hidup dari permintaan HTTP umumnya terlihat seperti ini:
  1. Seorang pengguna mengunjungi URL dari sebuah situs web.
  2. Hal ini menciptakan permintaan yang diarahkan ke web server melalui internet (jaringan DNS itu, router dan switch) melalui HTTP (Hypertext Transfer Protocol).
  3. Web server menerima permintaan HTTP dan merespon pengguna dengan halaman web (atau isi) yang diminta.

Setiap kali Anda mengklik link dan mengunjungi halaman web, di belakang layar Anda membuat permintaan, dan pada gilirannya menerima respon dari web server. Perhatikan bahwa permintaan HTTP dapat dilakukan melalui banyak saluran, bukan hanya web browser. Misalnya, permintaan HTTP dapat dibuat dengan menggunakan TELNET, atau klien ditulis dalam JAVA atau C # dll

Untuk melihat contoh dari apa yang permintaan HTTP dan respon sepertinya melakukan hal berikut:
  1. Pergi ke situs http://web-sniffer.net/
  2. Ketik www.google.com (atau situs web apapun yang Anda inginkan) pada "HTTP (S)-URL:" field input. Ketika Anda klik "Submit" Anda akan melihat permintaan HTTP dan data respon untuk www.google.com.

Anatomi permintaan HTTP:
Sebagai web developer, daerah penting untuk dipahami adalah bagian metode permintaan HTTP. Metode ini memberitahu server web apa permintaan sedang dilakukan pada URI.
Jadi jika Anda mengetikkan URL www.google.com / keuangan (misalnya). Anda meminta URI / keuangan. Dalam URI / keuangan permintaan HTTP harus menentukan metode HTTP.

Metode porsi permintaan HTTP berisi opsi definisi sebagai berikut:
Method         = "OPTIONS"
                      | "GET"
                      | "HEAD"
                      | "POST"
                      | "PUT"
                      | "DELETE"
                      | "TRACE"
                      | "CONNECT"
                      | extension-method
       extension-method = token


OPTION
Pilihan ini berguna untuk mencari tahu mana metode HTTP dapat diakses oleh klien.Tergantung pada bagaimana web server Anda mencoba untuk menyambung ke dikonfigurasi, administrator mungkin hanya memiliki POST dan GET metode HTTP diakses. Sementara metode HTTP lain seperti DELETE, TRACE, dll dinonaktifkan.

GET
Sebuah permintaan GET mengambil data dari web server dengan menentukan parameter di bagian URL dari permintaan. Jika Anda memeriksa contoh permintaan HTTP bawah ini, kami minta index.html, dan melewati report_id parameter.

GET /index.html?report_id=34543222 HTTP/1.1
 Host: www.awebsite.com
 User-Agent: Safari/4.0


Contoh saat menggunakan GET:
  1. Anda mengakses URL murni demi melihat data. Anda bisa menganggapnya sebagai menggunakan pernyataan SELECT SQL. Anda meminta data dari server web tanpa maksud memperbarui data apapun.
  2. Anda perlu URL untuk menjadi 'bookmarkable'. Pada dasarnya HTTP GET dianggap diulangi, yang memungkinkan permintaan untuk dicoba aman dan tanggapan-cache.
  3. Anda tidak keberatan permintaan diulang. Misalnya pengguna mengunjungi URL yang sama lebih dari sekali.

Contoh ketika tidak menggunakan GET:
  1. Anda lewat data sensitif seperti username, password, nomor jaminan sosial, dll
  2. Anda mengirimkan data dalam jumlah besar. Meskipun tidak ada batas karakter didefinisikan dalam spesifikasi HTTP untuk panjang URL, IE 4 misalnya hanya mendukung URL panjang maksimum ~ 2000 karakter menggunakan permintaan GET.
  3. Anda perlu memperbarui sesuatu pada server, misalnya mengirimkan formulir yang akan memperbarui alamat pengguna atau keranjang belanja.

POST
Sebuah permintaan HTTP POST memanfaatkan badan pesan untuk mengirim data ke server web. Jika Anda memeriksa contoh permintaan HTTP POST di bawah ini, Anda akan melihat bahwa kita mengirimkan permintaan HTTP POST dengan tubuh pesan 'userid = mo & password = mypassw' untuk login.jsp (login.jsp akan menjadi sebuah aplikasi yang ke depan server web permintaan untuk).
Contoh saat menggunakan POST:
  1. Anda memiliki sejumlah besar data untuk mengirim ke server web (ukuran data akan melebihi batas URL dari metode GET).
  2. Anda mengirim data sensitif seperti uesrnames, password, nomor jaminan sosial dan lain-lain
  3. Anda mengubah keadaan data dalam aplikasi web. Misalnya, keranjang belanja melacak item yang Anda beli.

Contoh ketika tidak menggunakan POST:
  1. URL yang Anda melewati memiliki persyaratan menjadi 'bookmarkable'. Jika keadaan perubahan URL, maka pengguna tidak akan dapat mengambil, atau melihat data itu itu adalah mantan negara.
  2. Permintaan Anda perlu idempotent. Perhatikan bahwa permintaan POST bisa idempotent, namun itu praktik yang lebih baik untuk menggunakan PUT (jika metode permintaan HTTP ini didukung oleh web server dan client) 

POST /login.jsp HTTP/1.1
 Host: www.awebsite.com
 User-Agent: Safari/4.0
 Content-Length: 27
 Content-Type: application/x-www-form-urlencoded

 userid=mo&password=mypassw

PUT
PUT mirip dengan POST memanfaatkan badan pesan untuk mentransfer data. Namun, ada beberapa perbedaan mendasar antara keduanya. Pertama PUT dianggap idempotent, kedua tindakan seorang PUT ini selalu ditetapkan untuk URI tertentu, akhirnya PUT adalah untuk memuat data untuk sumber daya itu. Dengan kata lain Anda harus tahu lokasi yang tepat dari mana data yang Anda kirimkan akan diambil nanti.
Contoh kapan harus menggunakan PUT:
  1. Masukan adalah idempotent, jadi pada dasarnya jika Anda perlu untuk mengakomodasi untuk skenario di mana ada permintaan yang disampaikan beberapa kali tapi hasilnya harus sama untuk setiap pengiriman, penggunaan PUT.Ini bisa berguna untuk membuat user baru misalnya. Jika Anda mengirim permintaan PUT untuk membuat user Joe Smith beberapa kali, permintaan terakhir harus memiliki hasil yang sama seolah-olah dikirim pertama.
  2. Anda memiliki URI khusus yang Anda mengirim data ke. Sebagai contoh:
POST URI:

 http://hostname.com/users/new

 PUT URI:

 http://hostname.com/users/privacyyou


Contoh ketika tidak menggunakan PUT:
  1. PUT tidak boleh digunakan untuk permintaan non idempotent (jika keadaan sumber daya kemungkinan akan berubah setiap kali permintaan dikirim).
  2. Ada baiknya untuk diingat bahwa dalam kasus bentuk html, kebanyakan browser tidak mendukung PUT / DELETE metode. Diharapkan POST / GET digunakan.Beberapa kerangka Tenang seperti Ruby on Rails misalnya memerlukan penggunaan PUT / DELETE, namun ini Metode HTTP hanya terowongan melalui Metode POST HTTP. 
PUT /somedatabase/some_doc_id HTTP/1.1
 Content-Length: 240
 Content-Type: application/json

 {
   "Subject":"Resume",
   "Author":"Mo",
   "Body":"Find my resume attached"
 }


HEAD
HTTP Metode HEADgunakan untuk mengambil informasi tentang URL dari web server. Jadi misalnya jika Anda mengirim permintaan HEAD, Anda akan menerima respon dari server web yang berisi informasi yang sama seperti yang Anda lakukan dengan HTTP POST tidak termasuk data tubuh. Berikut adalah contoh:

HEAD /de HTTP/1.1[CRLF]
 Host: www.google.com[CRLF]
 Connection: close[CRLF]
 User-Agent: Web-sniffer/1.0.37 [CRLF]
 Accept-Encoding: gzip[CRLF]
 Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
 Cache-Control: no-cache[CRLF]
 Accept-Language: de,en;q=0.7,en-us;q=0.3[CRLF]
 Referer: http://web-sniffer.net/[CRLF]


DELETE
Metode HTTP DELETE dapat digunakan untuk menghapus sumber daya dari server.Umumnya digunakan dalam dua skenario. Skenario Fist adalah jika Anda mengikuti standar tenang dalam mengembangkan aplikasi web Anda. Kedua hal itu dapat digunakan saat DELETE diaktifkan pada web-server dan Anda ingin mengikuti standar HTTP untuk menghapus sumber daya. Sangat penting untuk dicatat namun yang dapat Anda gunakan HTTP POST untuk menangani tindakan HTTP DELETE juga, keputusan dipersempit ke opsi yang diuraikan di atas.


TRACE
Jika Anda mencoba untuk menjalankan metode TRACE HTTP pada kebanyakan web server-Anda mungkin akan melihat pesan ini: 

Status: HTTP/1.1 501 Not Implemented


HTTP TRACE digunakan untuk eacho isi dari Permintaan HTTP kembali ke pemohon (yang dapat berguna untuk debugging). Namun ini dapat menimbulkan ancaman keamanan karena kode berbahaya dapat menyalahgunakan fungsi TRACE HTTP untuk mendapatkan akses ke informasi dalam header HTTP seperti cookies dan data otentikasi, jika permintaan TRACE HTTP dikirim data permohonan asli akan dikembalikan di samping setiap pengguna tertentu data. Contoh respon HTTP TRACE dapat terlihat seperti ini: 

TRACE / HTTP/1.1
 Host: www.google.com

 HTTP/1.1 200 OK
 Server: Microsoft-IIS/5.0
 Date: Tue, 31 Oct 2012 03:01:44 GMT
 Connection: close
 Content-Type: message/http
 Content-Length: 39

 TRACE / HTTP/1.1
 Host: www.google.com


CONNECT
HTTP CONNECT dapat digunakan untuk membuat sambungan jaringan ke server web melalui HTTP. Ini terutama digunakan dalam kasus di mana sebuah koneksi HTTP aman / terenkripsi (terowongan) perlu dibangun antara klien dan web server seperti koneksi SSL.
Terowongan HTTP sederhana koneksi terenkripsi melalui proxy HTTP untuk tujuan sewenang-wenang. Terowongan mengambil keuntungan dari metode HTTP CONNECT biasanya digunakan untuk HTTPS (lalu lintas web yang aman) untuk menghubungkan ke server tujuan. Sebuah koneksi HTTPS khas melalui proxy akan terlihat seperti: 

CONNECT remote-server:443 HTTP/1.0
 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;..
 Host: remote-server
 Content-Length: 0
 Proxy-Connection: Keep-Alive
 Pragma: no-cach


Respon HTTP Codes
Setiap kali permintaan dibuat ke server HTTP, kode respon dikirim kembali ke klien yang menyertai data yang diminta. Sangat penting untuk memahami apa kode respon adalah sebagai mereka akan berguna untuk mengelola kesalahan dalam aplikasi web Anda.

Source
Penjelasan tentang HTTP Request Method (GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE) Title : Penjelasan tentang HTTP Request Method (GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE)
Description : Topik-topik pengantar berikut akan dibahas dalam artikel ini: Siklus hidup dari permintaan HTTP & respon. Anatomi permintaan HTTP &...
Rating : 4.5 stars based on 153 reviews
Ditulis oleh: BloggerUPS - Monday, September 16, 2013

9 komentar untuk "Penjelasan tentang HTTP Request Method (GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE)"

  1. makasih bro..
    berguna banget nih buat aplikasi yang mau ane buat

    ReplyDelete
  2. sukses tambah aku makin bingung om

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Terima kasih gan atas ilmu pengetahuannya,,,
    Artikel agan semuannya mantap,, menjelaskan secara detail,,, pasti bukan ahli software aja ya,,,

    ReplyDelete
  5. Wah, Sangat membantu gan...
    terus penggunaan line [crlf] itu gmn penjelasannya?

    ReplyDelete
  6. tambah pusing mikirin payload

    ReplyDelete
  7. Kurang membantu... bahasanya hasil copas bahasa inggris. Bukan karya sendiri.. paraah.

    ReplyDelete