HTTPQUERY
Bahasa Indonesia

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:

  • GET dengan 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.
  • POST dengan body membawa payload dengan baik, tetapi berbohong soal niat. POST tidak 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

PropertiQUERYGETPOST
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.