13 poin oleh xguru 2024-09-18 | 7 komentar | Bagikan ke WhatsApp
  • Mengusulkan metode HTTP baru, yaitu QUERY
    • Metode permintaan yang aman dan idempoten, yang dapat mengirimkan konten saat request
    • Dapat digunakan ketika data yang dikirim dalam request terlalu besar untuk dienkode ke dalam URI
  • Jika parameter kueri berukuran beberapa KB atau lebih, banyak implementasi menerapkan batasan
    • Sering kali batasan ini tidak dapat diketahui sebelumnya, dan karena harus dienkode, hal ini tidak efisien
  • Karena itu, banyak implementasi menggunakan POST alih-alih GET untuk menjalankan kueri
    • Namun tanpa pengetahuan spesifik tentang server, sulit mengetahui apakah operasi tersebut aman dan idempoten, sehingga tetap memiliki keterbatasan dasar yang sama seperti GET
  • Metode QUERY menawarkan solusi untuk menjembatani kesenjangan antara penggunaan GET dan POST
    • Seperti POST, input untuk operasi kueri dikirim di dalam konten request, bukan sebagai bagian dari URI request
    • Namun tidak seperti POST, metode ini secara eksplisit aman dan idempoten, sehingga mendukung fitur seperti caching dan retry otomatis

Request

QUERY /contacts HTTP/1.1  
Host: example.org  
Content-Type: example/query  
Accept: text/csv  
  
select surname, givenname, email limit 10  

Response

HTTP/1.1 200 OK  
Content-Type: text/csv  
Content-Location: /contacts/responses/42  
Location: /contacts/queries/17  
  
surname, givenname, email  
Smith, John, john.smith@example.org  
Jones, Sally, sally.jones@example.com  
Dubois, Camille, camille.dubois@example.net  

7 komentar

 
regentag 2024-09-19

Saya tidak tahu kenapa ini perlu ditambahkan ke protokol.
Apakah benar ada begitu banyak skenario di mana parameter kueri melebihi beberapa KB?

 
savvykang 2024-09-19

https://www.baeldung.com/cs/http-get-with-body
Spesifikasi HTTP tampaknya memberi terlalu banyak ruang bagi pembaca untuk menafsirkannya sendiri dan berubah secara tidak konsisten, sampai-sampai terlihat seperti mereka ingin membuat metode yang benar-benar baru.

 
nemorize 2024-09-18

GET dengan body permintaan

 
beoks 2024-09-19

Beberapa library client bahkan tidak menyediakan cara untuk mengirim request body saat membuat permintaan GET, jadi ini sepertinya bisa menjadi alternatif.

 
nemorize 2024-09-20

Dari sudut pandang implementasi library, bukankah ini justru usulan perubahan standar yang makin tidak diperlukan?

Dalam spesifikasi standar, GET tidak bisa memiliki request body, jadi library-lah yang secara sewenang-wenang mengirimkan request body...
Kalau begitu, bukankah tidak masalah jika cukup mengimplementasikan method kustom di level library saja?

Sulit untuk sepenuhnya menyangkal kebutuhannya, tetapi dibandingkan dengan PUT, PATCH, DELETE, dan sebagainya yang muncul saat HTTP berkembang dari 1.0 ke 1.1, rasanya ini kurang meyakinkan.

 
babadudu 2024-09-23

https://www.rfc-editor.org/rfc/rfc9110.html#name-method-definitions

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET

https://stackoverflow.com/questions/978061/http-get-with-request-body

https://elastic.co/guide/en/…

  1. Dalam spesifikasi standar, metode GET tidak menjelaskan bagian tentang body, tetapi tidak pernah melarang untuk menyertakannya.

  2. Karena ada framework server yang tidak memproses body pada metode GET, MDN merekomendasikan agar tidak menyertakan body pada metode GET.

  3. Elasticsearch mendukung body pada metode GET.

 
vwjdalsgkv 2024-09-20

Menurut saya, jika spesifikasi harus diubah karena implementasi library, sepertinya perlu pertimbangan yang lebih matang.