Perintah dan konteks
RFC 10008, yang diterbitkan pada Juni 2026, mendefinisikan metode HTTP QUERY. Metode ini memungkinkan klien menempatkan deskripsi kueri dalam konten permintaan sambil mendeklarasikan operasi yang aman dan idempoten pada sumber daya target. Wawancara ini menguji pemahaman tentang kesenjangan antara semantik protokol dan realitas infrastruktur; ini tidak menuntut migrasi langsung dari setiap endpoint pencarian POST yang ada.
Apa yang dinilai oleh pewawancara
Pewawancara ingin melihat bahwa QUERY bukanlah “GET dengan body” melainkan metode independen: konten permintaan dan tipe media berpartisipasi dalam semantik kueri, cache key harus memperhitungkan konten tersebut, dan panggilan lintas-asal (cross-origin) umumnya memerlukan preflight. Jawaban yang kuat juga mencakup penemuan (discovery) dengan OPTIONS atau Accept-Query, fallback 405 untuk metode yang tidak dikenal, log gateway, dan kompatibilitas WAF.
Pertanyaan untuk diklarifikasi sebelum menjawab
Apakah kueri benar-benar bersifat read-only?
Pastikan bahwa kueri tidak mengubah status sumber daya target. Aman dan idempoten membatasi semantik sumber daya target; server masih dapat membuat sumber daya tambahan yang memuat hasil, sehingga “tanpa efek samping” bukanlah janji mutlak bahwa tidak ada penulisan di mana pun.
Bagaimana cakupan dukungannya (support envelope)?
Buat daftar Fetch peramban, SDK, reverse proxy, CDN, WAF, service mesh, dan klien internal yang harus menerima QUERY. Sebuah metode dapat berfungsi di server aplikasi tetapi ditolak atau ditulis ulang di tengah jalan.
Apa persyaratan caching dan privasinya?
Konten kueri dapat berisi filter sensitif. Identifikasi lapisan mana yang mencatat URI, konten permintaan, dan cache key, lalu putuskan apakah shared caching, redaksi, atau jalur POST lebih tepat.
Kerangka jawaban 30 detik
“QUERY berguna ketika konten kueri yang kompleks membutuhkan metode yang eksplisit aman, idempoten, dan dapat di-cache. Saya akan menemukan dukungan melalui OPTIONS Allow atau bidang respons Accept-Query, lalu memverifikasi proxy, CDN, WAF, dan klien nyata dalam matriks kompatibilitas. Cache key harus menyertakan konten permintaan dan metadata media yang relevan, serta panggilan cross-origin memerlukan preflight. Jika ekosistem belum siap, saya akan mempertahankan GET untuk kueri pendek dan POST sebagai jalur kompatibilitas daripada berasumsi infrastruktur telah ditingkatkan hanya karena RFC tersebut ada.”
Jawaban mendalam langkah demi langkah
Langkah 1: Tetapkan batasan GET, QUERY, dan POST
Pertahankan kueri yang pendek, dapat di-bookmark, dan dapat disalin pada GET. Evaluasi QUERY untuk operasi read-only dengan konten yang kompleks. Pertahankan POST saat operasi mengubah status, ekosistem tidak memiliki dukungan, atau kompatibilitas form dan klien yang ada sangat penting. Pilih berdasarkan kombinasi semantik dan matriks deployment.
Langkah 2: Tentukan tipe konten dan kontrak layanan
QUERY harus membawa Content-Type yang konsisten dengan konten permintaannya. Kontrak harus menentukan format kueri, paginasi, pengurutan, penanganan kesalahan, dan apakah hasil dapat diambil dengan GET melalui Content-Location atau Location.
Langkah 3: Tambahkan penemuan kapabilitas dan fallback yang aman
Gunakan OPTIONS Allow atau Accept-Query untuk mengumumkan metode yang didukung dan tipe media kueri. Jika klien melihat 405, 415, atau penolakan gateway, ikuti kebijakan fallback POST yang eksplisit; percobaan ulang tanpa kendali (blind retries) dapat melipatgandakan lalu lintas.
Langkah 4: Rancang perilaku cache dan percobaan ulang (retry)
QUERY bersifat idempoten dan dapat dicoba lagi setelah kegagalan koneksi, tetapi cache key harus menyertakan konten permintaan dan metadata terkait. Setiap normalisasi harus mempertahankan keselarasan antara semantik cache dan origin, jika tidak, satu kueri dapat menerima hasil dari kueri lain.
Langkah 5: Verifikasi cross-origin dan operasional
QUERY bukan metode yang masuk dalam daftar aman CORS (CORS-safelisted), sehingga peramban memicu preflight. Verifikasi bahwa OPTIONS, Allow, log, metrik, aturan WAF, rate limit, dan penelusuran (tracing) mengenali metode ini, serta catat tingkat fallback dan penyebab kegagalan.
Contoh jawaban berkualitas tinggi
Saya tidak akan mengganti POST secara massal hanya karena RFC 10008 diterbitkan. Saya akan mempertahankan filter kecil yang dapat dibagikan pada GET dan menguji coba QUERY hanya untuk antarmuka read-only dengan konten kueri yang besar dan sekumpulan klien yang terkontrol. Server akan mewajibkan Content-Type yang benar dan mengiklankan dukungan dengan Accept-Query atau OPTIONS; cache key akan menyertakan konten permintaan dan tipe media, serta klien cross-origin akan melewati preflight. Sebelum peluncuran, peramban, SDK, gateway, CDN, WAF, dan service mesh akan menjalankan kueri nyata sementara kami memantau 405, 415, ketidakcocokan cache, dan pemotongan log. Lapisan penting apa pun yang tidak didukung akan tetap menggunakan fallback POST hingga bukti migrasi memadai.
Kesalahan umum
- Kesalahan: Memperlakukan QUERY sebagai GET dengan body. → Mengapa gagal: Semantik metode, caching, dan aturan penemuan berbeda. → Solusi: Terapkan aturan RFC untuk konten, keamanan (safety), idempotensi, dan cache key.
- Kesalahan: Hanya menguji server aplikasi. → Mengapa gagal: Proxy, WAF, CDN, atau SDK mungkin menolak metode yang tidak dikenal. → Solusi: Jalankan matriks kompatibilitas jalur penuh (full-path) dengan fallback POST.
- Kesalahan: Membangun cache key hanya dari URI. → Mengapa gagal: Konten yang berbeda dapat menghasilkan hasil bersama yang salah. → Solusi: Sertakan konten dan metadata permintaan, lalu uji normalisasinya.
- Kesalahan: Memperlakukan idempotensi sebagai izin untuk mencoba ulang tanpa batas. → Mengapa gagal: Percobaan ulang tetap menghabiskan sumber daya dan memperbesar beban kueri. → Solusi: Gabungkan batas waktu (timeout), backoff, rate limit, dan batas kompleksitas kueri.
Pertanyaan lanjutan dan tanggapan
Pertanyaan lanjutan 1: Mengapa tidak mengubah setiap kueri kompleks menjadi QUERY?
Semantik metode hanyalah salah satu syarat. Klien, proxy, CDN, WAF, dan pemantauan harus sama-sama mendukung metode tersebut. Ketika kompleksitas migrasi dan fallback melebihi nilainya, POST yang sudah matang tetap lebih aman.
Pertanyaan lanjutan 2: Bisakah respons QUERY di-cache?
Bisa, tetapi cache key harus menyertakan konten permintaan dan metadata terkait, dan cache harus memahami tipe media. Untuk hasil yang sensitif atau normalisasi yang berisiko, batasi shared caching atau ekspos sumber daya yang setara melalui GET.
Pertanyaan lanjutan 3: Apa yang terjadi pada panggilan peramban cross-origin?
QUERY tidak masuk dalam daftar aman CORS, sehingga peramban mengirimkan preflight. Server harus menjawab OPTIONS dan mengizinkan metode, header yang diminta, dan origin; preflight yang gagal harus menjadi kesalahan klien yang eksplisit.
Pertanyaan lanjutan 4: Bagaimana jika gateway yang tidak dikenal mengembalikan 405?
Baca Allow, pilih fallback POST dari kebijakan klien yang berversi, dan catat penyebab serta tingkat kejadiannya. Jangan mengklasifikasikan kegagalan metode yang tidak dikenal sebagai kegagalan kueri bisnis.