Kaedah HTTP yang telah kita palsukan selama 16 tahun

Pembangun backend menghadapi masalah berterusan dengan titik akhir (endpoint) carian.

Anda mahu menggunakan GET kerana carian adalah operasi bacaan. Tetapi penapis carian anda menjadi terlalu besar. URL anda mencecah dua ribu aksara. Proksi memotong (truncate) permintaan anda. Carian anda gagal.

Anda beralih ke POST untuk mengatasi had tersebut. Ini berkesan, tetapi ia adalah satu penipuan. POST memberitahu setiap proksi dan cache bahawa anda sedang mengubah data. Ini menghentikan semua proses caching. Anda kehilangan kepantasan GET.

Selama enam belas tahun, kita tidak mempunyai jalan tengah.

Pada Jun 2026, IETF menerbitkan RFC 10008. Ini memperkenalkan kaedah QUERY. Ia merupakan kaedah HTTP baharu yang pertama sejak 2010.

QUERY menggabungkan bahagian terbaik GET dan POST:

• Ia membawa badan permintaan (request body) untuk penapis yang kompleks. • Ia adalah selamat (safe), bermakna pelayan tidak mengubah keadaan (state). • Ia adalah idempotent, bermakna anda boleh menjalankannya dua kali dengan hasil yang sama. • Ia boleh disimpan dalam cache (cacheable), membolehkan CDN menyimpan respons.

Permintaan QUERY kelihatan seperti ini:

QUERY /products HTTP/1.1
Host: api.shop.example
Content-Type: application/json

{
  "filter": { "category": "boots", "inStock": true },
  "sort": "-price",
  "limit": 20
}

RFC baharu ini juga menambah pengepala (header) Accept-Query. Ini membolehkan API memberitahu anda format pertanyaan (query) mana yang disokongnya.

Amaran untuk pembangun:

Caching permintaan QUERY adalah berbeza daripada permintaan GET. Cache GET menggunakan URL sebagai kunci. Cache QUERY mesti menggunakan badan permintaan sebagai sebahagian daripada kunci. Jika infrastruktur anda tidak memahami perkara ini, seorang pengguna mungkin melihat hasil carian peribadi pengguna lain.

Jangan terburu-buru untuk menggunakannya dalam persekitaran produksi (production) lagi. Ekosistem memerlukan masa untuk menyesuaikan diri.

• Pelayar (Browsers) belum menyokong QUERY dalam fetch() lagi. • Borang HTML hanya menyokong GET dan POST. • Banyak gateway API dan WAF akan menolak kaedah yang tidak dikenali.

Reka API anda dengan mengambil kira QUERY, tetapi kekalkan endpoint POST anda buat masa ini.

QUERY menamatkan kompromi yang lama. Ia membolehkan anda mengajukan soalan yang kompleks tanpa menipu rangkaian.

Adakah anda sedang menunggu ekosistem menyesuaikan diri, atau adakah anda sedang menguji QUERY sekarang?

Sumber: https://dev.to/arya_koste_5845807df94776/query-the-http-method-weve-been-faking-for-16-years-f9i