BAB 1 / VERSI SEDERHANA

HTTP tanpa bikin kepala pusing.

HTTP adalah cara browser dan server saling berkirim pesan. Halaman ini memecahnya jadi langkah kecil.

Untuk pemula 9 bagian Versi Teknis

Masalah sehari-hari

Ketika Anda membuka sebuah link, halaman tidak muncul begitu saja: browser mengirim request ke server, lalu server mengirim respons kembali.

01
Browser bertanya, "Bisa kirim halaman berita?" Server membaca permintaan itu dan mengirim jawaban yang bisa dipahami browser.

Analogi Kuka

Kuka datang ke loket kantor pos untuk meminta sebuah surat. Ia menyerahkan surat permintaan kepada petugas, lengkap dengan alamat tujuan dan isi yang ingin dikirim.

Petugas loket memeriksa surat itu lalu memberikan tanda terima bercap. Loket tidak mengingat Kuka setelah urusan selesai, jadi pada kunjungan berikutnya Kuka perlu membawa kartu identitas lagi.

Peta sederhananya

Surat Kuka adalah request, jawaban loket adalah respons, dan jalur pos adalah TCP yang membawa pesan dari satu tempat ke tempat lain.

Ilustrasi

Kuka menyerahkan surat ke loket dan menerima tanda terima dalam alur request dan respons HTTP.
Kuka menyerahkan surat, loket mengembalikan tanda terima.

Perhatikan dua arahnya saja. Surat masuk lewat celah atas. Tanda terima keluar lewat celah bawah.

Penjelasan konsep

Di loket pos, surat permintaan Kuka adalah request. Tanda terimanya adalah respons. Di HTTP, browser jadi client dan loket jadi server.

Surat punya tiga bagian: baris perintah untuk mengatakan apa yang diminta, label di sampul sebagai header, dan isi surat sebagai body.

Method adalah kata kerja pada kertas permintaan: GET untuk mengambil, POST untuk menitipkan, lalu PUT, PATCH, atau DELETE untuk mengganti atau menghapus.

Status code adalah cap pada tanda terima: 200 berarti berhasil, 404 berarti alamat tidak ditemukan, dan 500 berarti mesin server bermasalah.

Tanda terima dengan tiga cap status code: 200 berhasil, 404 alamat tidak ditemukan, dan 500 server bermasalah.
Tiga cap berbeda di tanda terima.

HTTPS seperti amplop tersegel, sehingga tukang pos di perjalanan tidak bisa membaca atau mengubah isi surat.

Surat dalam amplop tersegel bergerak dari Kuka menuju loket melalui jalur pos.
Amplop tersegel sepanjang perjalanan.

Istilah yang cukup dikenali dulu, ketuk untuk membuka:

Idempotensi

Menekan tombol ambil berkali-kali seperti meminta salinan surat yang sama, hasil akhirnya tetap sama.

Stateless

Loket tidak menyimpan ingatan antar kunjungan, jadi setiap request perlu membawa kartu identitas jika server perlu tahu siapa Anda.

Cookie, session, dan JWT

Kartu identitas yang dibawa kembali agar loket dapat mengenali kunjungan berikutnya.

Redireksi

Tanda terima yang mengatakan bahwa alamat tujuan sudah pindah ke alamat lain.

Caching

Menyimpan fotokopi surat supaya Anda tidak perlu meminta ulang ke loket.

Keep-alive

Jalur pos tetap terbuka untuk beberapa surat, jadi loket tidak perlu membuka dan menutup jalur setiap kali.

Kuka membawa kartu identitas di depan loket yang tidak menyimpan catatan kunjungan.
Loket tidak menyimpan apa pun.

Diagram alur

Alur request dan respons HTTP Browser mengirim request ke server dan menerima respons dengan status code. browser client server loket request respons status code 200 / 404

Browser mengirim request, server memprosesnya, lalu respons pulang membawa status code agar browser tahu hasilnya.

Contoh mini

06
Request
GET /berita
Host: contoh.test
Accept: text/html
Respons
200 OK
Content-Type: text/html
Berita hari ini.

Seperti kartu pos, request menyebut tujuan dan yang diminta, lalu respons mengembalikan hasil beserta cap statusnya.

Ringkasan

  • HTTP adalah percakapan teratur antara client dan server melalui request dan respons.
  • Request memiliki baris perintah, header, dan body, seperti surat dengan instruksi, label, dan isi.
  • Method menyatakan tindakan yang diminta, sedangkan status code menyatakan hasilnya.
  • Server bersifat stateless. Client perlu membawa lagi identitas atau salinan yang server butuhkan.
  • HTTPS menyegel isinya. TCP membawa pesan dari client ke server.

Pertanyaan pemahaman

  1. Apa saja isi utama sebuah request dan respons HTTP?
  2. Mengapa server tidak mengingat Anda antar request? Apa yang harus Anda bawa setiap kali datang?
  3. Apa perbedaan arti status code 200, 404, dan 500?

Mau lebih dalam

Versi teknis membahas detail yang belum kita bongkar di sini, termasuk header, CORS, dan caching dalam.

Disinggung sekilas

Belum dibahas di sini