Dalam pemrograman gaya RESTful, kita harus menggunakan metode HTTP sebagai blok bangunan kita. Saya agak bingung metode mana yang cocok dengan metode CRUD klasik. DAPATKAN / Baca dan HAPUS / Hapus sudah cukup jelas.
Namun, apa perbedaan antara PUT / POST? Apakah mereka cocok satu lawan satu dengan Buat dan Perbarui?
http
rest
crud
http-method
Drew
sumber
sumber
Seluruh kunci adalah apakah Anda melakukan perubahan idempoten atau tidak. Artinya, jika mengambil tindakan pada pesan dua kali akan menghasilkan "hal yang sama" berada di sana seolah-olah itu hanya dilakukan sekali, Anda punya perubahan idempoten dan itu harus dipetakan ke PUT. Jika tidak, itu peta ke POST. Jika Anda tidak pernah mengizinkan klien untuk mensintesis URL, PUT cukup dekat dengan Pembaruan dan POST dapat menangani Buat saja, tapi itu jelas bukan satu-satunya cara untuk melakukannya; jika klien tahu bahwa ia ingin membuat
/foo/abc
dan tahu konten apa yang akan diletakkan di sana, itu berfungsi dengan baik sebagai PUT.Deskripsi kanonik POST adalah ketika Anda berkomitmen untuk membeli sesuatu: itu adalah tindakan yang tidak ingin diulangi oleh siapa pun tanpa mengetahuinya. Sebaliknya, pengaturan alamat pengiriman untuk pesanan sebelumnya dapat dilakukan dengan PUT: tidak masalah jika Anda disuruh mengirim
6 Anywhere Dr, Nowhereville
sekali, dua atau seratus kali: masih alamat yang sama. Apakah itu berarti itu pembaruan? Bisa jadi ... Itu semua tergantung pada bagaimana Anda ingin menulis back-end. (Perhatikan bahwa hasilnya mungkin tidak identik: Anda dapat melaporkan kembali ke pengguna ketika mereka terakhir melakukan PUT sebagai bagian dari representasi sumber daya, yang akan memastikan bahwa PUT berulang tidak menyebabkan hasil yang identik, tetapi hasilnya tetap menjadi "sama" dalam arti fungsional.)sumber
POST
danPUT
yang menarik, dan harus membuat jawaban untuk "Yang 'buat' dan yang 'diperbarui'?" jauh lebih jelas. Selanjutnya, berkenaan dengan implementasi API, itu akan berarti bahwa repetitifPUT
harus berjumlah ke no-op diam, sedangkan repetitifPOST
mungkin melemparkan pengecualian jika beberapa aspek dari data yang dikirim seharusnya tetap unik di penyimpanan data. yang mendukung aplikasi.Saya sedang mencari jawaban yang sama, inilah yang dikatakan IBM. IBM Link
sumber
Saat ini (2016) kata kerja HTTP terbaru adalah GET, POST, PATCH , PUT dan DELETE
Gambaran
Semoga ini membantu!
Jika Anda tertarik untuk merancang API REST, ini adalah bacaan baru untuk dimiliki! repositori github versi situs web online
sumber
Ada pembicaraan video youtube yang luar biasa oleh stormpath dengan benar-benar menjelaskan hal ini, URL harus melewati bagian video yang benar:
badai video youtube
Juga ada baiknya menonton lebih dari satu jam berbicara tetapi sangat menarik jika Anda berpikir untuk menginvestasikan waktu dalam membangun api REST.
sumber
Itu tergantung pada situasi konkret .. tetapi secara umum:
PUT = perbarui atau ubah sumber daya konkret dengan URI sumber daya konkret.
POST = buat sumber daya baru di bawah sumber URI yang diberikan.
Yaitu
Edit posting blog:
PUT: / blog / entri / 1
Buat yang baru:
POST: / blog / entri
PUT dapat membuat sumber daya baru dalam beberapa keadaan di mana URI sumber daya baru jelas sebelum permintaan. POST dapat digunakan untuk mengimplementasikan beberapa kasus penggunaan lain juga, yang tidak ditanggung oleh yang lain (DAPATKAN, PUT, HAPUS, KEPALA, OPSI)
Pemahaman umum untuk sistem CRUD adalah GET = request, POST = create, Put = update, DELETE = delete
sumber
Blok bangunan REST terutama adalah sumber daya (dan URI) dan hypermedia. Dalam konteks ini,
GET
adalah cara untuk mendapatkan representasi dari sumber daya (yang memang dapat dipetakan ke aSELECT
dalam istilah CRUD).Namun, Anda seharusnya tidak mengharapkan pemetaan satu-ke-satu antara operasi CRUD dan kata kerja HTTP. Perbedaan utama antara
PUT
danPOST
adalah tentang properti idempoten mereka.POST
juga lebih umum digunakan untuk pembaruan parsial, sepertiPUT
secara umum menyiratkan mengirimkan representasi penuh baru dari sumber daya.Saya sarankan membaca ini:
The spesifikasi HTTP juga merupakan referensi yang berguna:
sumber
Secara umum, ini adalah pola yang saya gunakan:
sumber
Proyek Symfony mencoba untuk menjaga agar metode HTTPnya tetap tergabung dengan metode CRUD, dan daftar mereka mengaitkannya sebagai berikut:
Perlu dicatat bahwa, seperti yang mereka katakan di halaman itu, "Pada kenyataannya, banyak browser modern tidak mendukung metode PUT dan DELETE."
Dari apa yang saya ingat, Symfony "memalsukan" PUT dan DELETE untuk browser-browser yang tidak mendukung mereka ketika membuat formulirnya, untuk mencoba sedekat mungkin menggunakan metode HTTP yang benar secara teoritis bahkan ketika browser tidak mendukung Itu.
sumber