Menurut "ideologi REST", apa yang seharusnya ada di badan respons untuk permintaan PUT / POST / HAPUS?
Bagaimana dengan kode pengembalian? Apakah
HTTP_OK
cukup?Apa alasan konvensi semacam itu, jika ada?
Saya telah menemukan postingan yang bagus yang menggambarkan perbedaan POST / PUT: POST vs PUT Tetapi masih belum menjawab pertanyaan saya.
rest
http
post
http-delete
tuxSlayer
sumber
sumber
Secara keseluruhan, konvensi ini “berpikir seperti Anda hanya memberikan halaman web”.
Untuk PUT, saya akan mengembalikan tampilan yang sama dengan yang Anda dapatkan jika Anda melakukan GET segera setelah itu; itu akan menghasilkan 200 (well, dengan asumsi rendering berhasil tentu saja). Untuk POST, saya akan melakukan redirect ke sumber daya yang dibuat (dengan asumsi Anda melakukan operasi pembuatan; jika tidak, kembalikan hasilnya); kode untuk pembuatan yang berhasil adalah 201, yang merupakan satu-satunya kode HTTP untuk pengalihan yang tidak ada dalam kisaran 300.
Saya tidak pernah senang tentang apa yang harus dikembalikan DELETE (kode saya saat ini menghasilkan HTTP 204 dan badan kosong dalam kasus ini).
sumber
PUT
permintaan kembali halaman berikutnya sepertinya praktik yang buruk, karena menyegarkan pada halaman yang dihasilkan akan menyebabkan permintaan untuk mengeksekusi lagi. Sebaliknya, bagi saya, masuk akal untuk melakukan pengalihan, dengan asumsi Anda sedang berurusan dengan permintaan sinkron.PUT
permintaan lain yang menyebabkan data dikembalikan. Misalnya, jika dua orang mereferensikan halaman yang sama, satu membuat pembaruan, lalu yang lain membuat pembaruan, jika orang pertama menyegarkan untuk melihat hasilnya, itu akan benar-benar menyebabkan hal-hal yang akan dikembalikan sebelum orang kedua membuat perubahan mereka.Membuat sumber daya umumnya dipetakan ke POST, dan itu harus mengembalikan lokasi sumber daya baru; misalnya, dalam scaffold Rails CREATE akan mengalihkan ke SHOW untuk sumber daya yang baru dibuat. Pendekatan yang sama mungkin masuk akal untuk memperbarui (PUT), tetapi itu kurang konvensi; pembaruan hanya perlu menunjukkan keberhasilan. Penghapusan mungkin hanya perlu mengindikasikan keberhasilan juga; jika Anda ingin mengarahkan, mengembalikan daftar sumber daya mungkin paling masuk akal.
Keberhasilan dapat ditunjukkan oleh HTTP_OK, ya.
Satu-satunya aturan keras dan cepat dalam apa yang saya katakan di atas adalah bahwa BUAT harus mengembalikan lokasi sumber daya baru. Bagi saya itu sepertinya tidak ada artinya; sangat masuk akal bahwa klien harus dapat mengakses item baru.
sumber
Oleh RFC7231 itu tidak masalah dan mungkin kosong
Bagaimana kami menerapkan solusi berbasis standar json api di proyek:
post / put: output atribut objek seperti pada get (filter bidang / hubungan berlaku sama)
delete: data hanya berisi null (untuk representasi objek yang hilang)
status untuk penghapusan standar: 200
sumber
Saya suka Alfonso Tienda merespons dari kode status HTTP untuk memperbarui dan menghapus?
Berikut beberapa Tips:
MENGHAPUS
TARUH
sumber