Saya merancang API untuk membahas HTTP dan saya bertanya-tanya apakah menggunakan perintah HTTP POST, tetapi dengan parameter kueri URL saja dan tanpa badan permintaan, adalah cara yang baik untuk melakukannya.
Pertimbangan:
- "Desain Web yang Baik" membutuhkan tindakan non-idempoten untuk dikirim melalui POST. Ini adalah tindakan non-idempoten.
- Lebih mudah untuk mengembangkan dan men-debug aplikasi ini ketika parameter permintaan ada di URL.
- API tidak dimaksudkan untuk penggunaan luas.
- Sepertinya membuat permintaan POST tanpa badan akan membutuhkan lebih banyak pekerjaan, mis.
Content-Length: 0
Tajuk harus ditambahkan secara eksplisit. - Bagi saya sepertinya juga POST tanpa badan sedikit bertentangan dengan harapan sebagian besar pengembang dan HTTP frameworks.
Apakah ada jebakan atau keuntungan lagi untuk mengirim parameter pada permintaan POST melalui permintaan URL daripada badan permintaan?
Sunting: Alasan mengapa hal ini dipertimbangkan adalah karena operasinya tidak idempoten dan memiliki efek samping selain pengambilan. Lihat spesifikasi HTTP :
Secara khusus, konvensi telah ditetapkan bahwa metode GET dan HEAD TIDAK HARUS memiliki signifikansi untuk mengambil tindakan selain pengambilan. Metode-metode ini harus dianggap "aman". Ini memungkinkan agen pengguna untuk mewakili metode lain, seperti POST, PUT dan DELETE, dengan cara khusus, sehingga pengguna dibuat sadar akan fakta bahwa tindakan yang mungkin tidak aman sedang diminta.
...
Metode juga dapat memiliki properti "idempotence" di mana (selain dari kesalahan atau masalah kedaluwarsa) efek samping dari N> 0 permintaan identik adalah sama seperti untuk satu permintaan. Metode DAPATKAN, KEPALA, PUT, dan HAPUS berbagi properti ini. Juga, metode OPSI dan LALU TIDAK HARUS memiliki efek samping, dan pada dasarnya idempoten.