Metode HTTP QUERY
QUERY adalah usulan metode HTTP yang mengisi celah nyata: metode ini aman (safe) dan
idempoten seperti GET, tetapi boleh membawa request body seperti POST.
Anggap saja sebagai “sebuah GET yang bisa Anda kirimi payload.”
Alasan keberadaannya
Query yang kompleks sejak lama memaksa pilihan yang canggung:
GETdengan query string menempatkan setiap filter di URL. URL memiliki batas panjang, tercatat di log dalam bentuk teks biasa, dan merepotkan untuk kriteria yang terstruktur atau bersarang.POSTdengan body membawa payload dengan baik, tetapi berbohong soal niat.POSTtidak aman maupun idempoten, sehingga cache, crawler, dan perantara harus mengasumsikan bahwa permintaan tersebut mengubah state. Padahal tidak — Anda hanya membaca.
QUERY menyelesaikan ketegangan itu: semantiknya menyatakan “ini adalah operasi baca”, dan body membawa kriterianya.
Properti
| Properti | QUERY | GET | POST |
|---|---|---|---|
| Aman | ✓ | ✓ | ✗ |
| Idempoten | ✓ | ✓ | ✗ |
| Request body | ✓ | ✗ | ✓ |
| Dapat di-cache | ✓ | ✓ | bersyarat |
Seperti apa bentuk permintaannya
QUERY /products HTTP/1.1
Host: shop.example
Content-Type: application/json
Accept: application/json
{ "category": "boots", "inStock": true }
Caching dengan Content-Location
Karena QUERY bersifat aman dan idempoten, sebuah respons dapat di-cache — tetapi
kunci cache tidak bisa hanya berupa URL, sebab body-nya bervariasi. Server menyebutkan
lokasi kanonis dari hasilnya dengan header Content-Location:
HTTP/1.1 200 OK
Content-Location: /products?category=boots&inStock=true
Cache-Control: max-age=60
Cache (atau klien) kemudian dapat menggunakan kembali representasi tersebut untuk permintaan yang setara. Inilah mekanisme yang membuat operasi baca bermuatan body tetap dapat di-cache.
Coba sendiri
Kunjungi Playground dan kirim permintaan QUERY sungguhan ke endpoint echo
situs ini untuk melihat secara persis bagaimana metode, header, dan body tiba di
server.
QUERY didefinisikan dalam sebuah IETF Internet-Draft dan masih terus berkembang. Perlakukan detail di atas sebagai ringkasan kerja dan periksa draft yang ditautkan untuk teks terkini yang otoritatif.