Metode HTTP yang telah kita palsukan selama 16 tahun
Pengembang backend menghadapi masalah terus-menerus dengan endpoint pencarian.
Anda ingin menggunakan GET karena pencarian adalah operasi baca. Namun, filter pencarian Anda tumbuh terlalu besar. URL Anda mencapai dua ribu karakter. Proxy memotong permintaan Anda. Pencarian Anda pun rusak.
Anda beralih ke POST untuk mengatasi batasan tersebut. Ini berhasil, tetapi ini adalah sebuah kebohongan. POST memberi tahu setiap proxy dan cache bahwa Anda sedang mengubah data. Hal ini menghentikan semua caching. Anda kehilangan kecepatan dari GET.
Selama enam belas tahun, kita tidak memiliki jalan tengah.
Pada Juni 2026, IETF menerbitkan RFC 10008. Ini memperkenalkan metode QUERY. Ini adalah metode HTTP baru pertama sejak 2010.
QUERY menggabungkan bagian terbaik dari GET dan POST:
• Membawa request body untuk filter yang kompleks. • Bersifat safe, artinya server tidak mengubah state. • Bersifat idempotent, artinya Anda dapat menjalankannya dua kali dengan hasil yang sama. • Dapat di-cache, memungkinkan CDN untuk menyimpan respons.
Sebuah permintaan QUERY terlihat 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 baru ini juga menambahkan header Accept-Query. Ini memungkinkan API memberi tahu Anda format query mana yang didukungnya.
Peringatan bagi para pengembang:
Melakukan caching pada permintaan QUERY berbeda dengan permintaan GET. Cache GET menggunakan URL sebagai key. Cache QUERY harus menggunakan request body sebagai bagian dari key. Jika infrastruktur Anda tidak memahami hal ini, satu pengguna mungkin dapat melihat hasil pencarian pribadi pengguna lain.
Jangan terburu-buru menggunakan ini di produksi. Ekosistem membutuhkan waktu untuk mengejar ketertinggalan.
• Browser belum mendukung QUERY dalam fetch() saat ini.
• Formulir HTML hanya mendukung GET dan POST.
• Banyak API gateway dan WAF akan menolak metode yang tidak dikenal.
Rancang API Anda dengan mempertimbangkan QUERY, tetapi tetap gunakan endpoint POST untuk saat ini.
QUERY mengakhiri kompromi yang panjang. Ini memungkinkan Anda mengajukan pertanyaan kompleks tanpa berbohong kepada jaringan.
Apakah Anda menunggu ekosistem mengejar ketertinggalan, atau Anda sedang menguji QUERY sekarang?
Source: https://dev.to/arya_koste_5845807df94776/query-the-http-method-weve-been-faking-for-16-years-f9i
