Cara bermain HTTP Kurir
- Baca instruksi level. Sebagian level sudah berisi request yang ditolak server, tugasmu memperbaikinya.
- Tulis request di editor: baris
METHOD /path, lalu headerNama: nilai, satu baris kosong, dan body JSON kalau perlu. - Balasan server dan isi tabel
/menuserta/pesananberubah setiap kamu mengetik. Baris yang berubah ditandaiberubahataubaru, yang dihapus dicoret. - Tekan Cek jawaban atau Ctrl + Enter. Jawaban dicek dari balasan dan isi server, bukan dari teks request-mu.
- Kalau buntu, buka Petunjuk. Level yang sudah selesai tetap tercentang di browser yang sama.
Yang kamu pelajari
- Level 1
GET
Membaca data tanpa mengubah apa pun di server.
- Level 2
Query string
Parameter setelah
?di path, misalnya?kategori=minuman, untuk menyaring hasil. - Level 3
POST dan Content-Type
POST membuat data baru. Header
Content-Type: application/jsonmemberi tahu server cara membaca body. Tanpa header itu, server warung membalas 415. - Level 4
Authorization Bearer
Token dikirim lewat header
Authorization: Bearer <token>. Tanpa token yang benar, balasannya 401. - Level 5
PUT vs PATCH
PUT mengganti seluruh data, jadi semua field wajib dikirim. PATCH hanya mengubah field yang kamu sebut.
- Level 6
DELETE dan 204
DELETE menghapus data. Balasan 204 No Content artinya berhasil tanpa body.
- Level 7
404 dan 405
404 artinya path-nya tidak ada di server. 405 artinya path-nya ada, tapi method-nya tidak diterima. Header
Allowmenyebut method yang boleh. - Level 8
Idempotensi
Request idempoten meninggalkan isi server yang sama walau dikirim berkali-kali, meski status balasannya bisa beda. PUT idempoten, POST tidak.
- Level 9
400 vs 409
400 artinya request-mu sendiri yang salah, misalnya JSON rusak atau isi field tidak valid. 409 artinya request-nya benar tapi bentrok dengan data di server.
Kenapa PUT aman diulang, POST tidak
POST /pesanan berarti "buatkan pesanan baru". Server memberi id sendiri, jadi dua kiriman yang sama menghasilkan dua pesanan. Itu masalah saat koneksi putus dan aplikasi mengirim ulang otomatis.
PUT /pesanan/kurir-1 berarti "simpan pesanan ini di alamat itu". Kiriman pertama membuat pesanan (201), kiriman kedua hanya menimpanya dengan isi yang sama (200). Hasil akhirnya tetap satu pesanan. Sifat ini disebut idempoten, dan GET, PUT, serta DELETE semuanya idempoten.
Tanya jawab
Apakah harus daftar akun untuk bermain?
Tidak. Semua level bisa dimainkan tanpa akun. Kemajuanmu disimpan di browser yang kamu pakai, jadi akan hilang kalau data browser dihapus.
Apakah request-nya dikirim ke server sungguhan?
Tidak. Server warungnya disimulasikan di browser, jadi tidak ada request jaringan. Server simulasi ini mengecek dengan urutan tetap: rute, method, Authorization, Content-Type, JSON, isi data, lalu bentrok data. Server sungguhan bisa memakai urutan lain.
Bagaimana cara menulis request HTTP mentah?
Baris pertama METHOD /path, misalnya POST /pesanan. Di bawahnya header, satu per baris, dengan format Nama: nilai. Setelah satu baris kosong, tulis body JSON. Untuk mengirim beberapa request sekaligus, pisahkan dengan baris ### seperti di file .http.
Apa beda 401 dan 403?
401 artinya server tidak tahu siapa kamu: token tidak ada atau salah. 403 artinya server tahu siapa kamu, tapi kamu tidak punya izin. Game ini hanya memakai 401 karena warungnya punya satu token pemilik.
Kenapa nama method harus huruf besar?
Nama method di HTTP peka huruf besar-kecil, dan semua method standar ditulis huruf besar: GET, POST, PUT, PATCH, DELETE. Nama header sebaliknya tidak peka huruf, jadi content-type dan Content-Type sama saja.