Saya telah membaca banyak hal tentang ini tetapi tidak bisa mendapatkan kesimpulan tentang topik ini.
Tapi saya tidak pernah menggunakan metode PUT atau DELETE HTTP Request. Kecenderungan saya adalah menggunakan GET ketika status sistem (aplikasi atau situs web saya) mungkin tidak terpengaruh (seperti daftar produk) dan menggunakan POST ketika terpengaruh (pesanan ditempatkan). Bukankah itu cukup atau saya melewatkan sesuatu?
http
web
httprequest
web-deployment
Rupesh Patel
sumber
sumber
Jawaban:
DELETE adalah untuk menghapus sumber permintaan:
PUT adalah untuk meletakkan atau memperbarui sumber daya di server:
Untuk spesifikasi lengkap kunjungi:
Karena browser saat ini sayangnya tidak mendukung kata kerja lain selain POST dan GET dalam bentuk HTML , Anda biasanya tidak dapat menggunakan HTTP sepenuhnya bersama mereka (Anda masih dapat membajak pengiriman mereka melalui JavaScript). Tidak adanya dukungan untuk metode ini dalam bentuk HTML menyebabkan URI berisi kata kerja, seperti misalnya
atau bahkan lebih buruk
secara efektif melakukan tunneling semantik CRUD melalui HTTP. Tetapi kata kerja tidak pernah dimaksudkan untuk menjadi bagian dari URI. Sebaliknya HTTP sudah menyediakan mekanisme dan semantik untuk CRUD Sumber Daya (misalnya perintah) melalui metode HTTP. HTTP adalah protokol dan bukan hanya beberapa layanan terowongan data.
Jadi untuk menghapus Resource di webserver, Anda akan menelepon
dan untuk memperbaruinya Anda akan menelepon
dan memberikan Representasi Sumber Daya yang diperbarui di badan PUT agar server web dapat menerapkannya kemudian.
Jadi, jika Anda membangun semacam klien untuk REST API , kemungkinan besar Anda akan membuatnya mengirim permintaan PUT dan DELETE. Ini bisa berupa klien yang dibangun di dalam browser, misalnya mengirim permintaan melalui JavaScript atau bisa juga berupa alat yang berjalan di server, dll.
Untuk beberapa detail lebih lanjut kunjungi:
sumber
Menggunakan kata kerja Permintaan HTTP seperti GET, POST, DELETE, PUT dll ... memungkinkan Anda untuk membangun aplikasi web RESTful. Baca tentang itu di sini: http://en.wikipedia.org/wiki/Representational_state_transfer
Cara termudah untuk melihat manfaat dari ini adalah dengan melihat contoh ini. Setiap kerangka kerja MVC memiliki
Router/Dispatcher
yang memetakan URL ke actionControllers. Jadi URL seperti ini:/blog/article/1
akan memanggilblogController::articleAction($id);
Sekarang Router ini hanya mengetahui URL atau/blog/article/1/
Tetapi jika Router itu akan mengetahui seluruh objek Permintaan HTTP, bukan hanya URL, ia dapat memiliki akses kata kerja Permintaan HTTP (GET, POST, PUT, DELETE ...), dan banyak hal berguna lainnya tentang Permintaan HTTP saat ini.
Itu akan memungkinkan Anda untuk mengonfigurasi aplikasi sehingga dapat menerima URL yang sama dan memetakannya ke actionControllers yang berbeda bergantung pada kata kerja Permintaan HTTP.
Sebagai contoh:
jika Anda ingin mendapatkan kembali artikel 1 Anda dapat melakukan ini:
tetapi jika Anda ingin menghapus artikel 1 Anda akan melakukan ini:
Perhatikan bahwa kedua Permintaan HTTP memiliki URI yang sama, / blog / article / 1, satu-satunya perbedaan adalah kata kerja Permintaan HTTP. Dan berdasarkan kata kerja itu, router Anda dapat memanggil actionController yang berbeda. Ini memungkinkan Anda untuk membangun URL yang rapi.
Baca dua artikel ini, mereka mungkin membantu Anda:
Symfony 2 - Dasar-dasar HTTP
Symfony 2 - Perutean
Artikel ini membahas tentang framework Symfony 2, tetapi dapat membantu Anda mengetahui cara kerja Permintaan dan Respons HTTP.
Semoga ini membantu!
sumber
Create
dan 1 untukDelete
. Jika Anda melakukan ini, pencarian Anda selanjutnya adalah " Bagaimana memiliki beberapa tindakan Posting dalam satu pengontrol ": P. Bukan berarti ini buruk, tetapi Anda kehilangan kemampuan untuk memiliki sumber daya unik yang diimplementasikan melalui tindakan kata kerja sebagai lawan harus secara eksplisit memberikan nama tindakan di URI.Meskipun saya mengambil risiko tidak populer, saya katakan itu tidak berguna saat ini .
Saya pikir mereka bermaksud baik dan berguna di masa lalu ketika misalnya DELETE memberi tahu server untuk menghapus sumber daya yang ditemukan di URL yang disediakan dan PUT (dengan saudara kandungnya PATCH) memberi tahu server untuk melakukan pembaruan dengan cara idempoten.
Hal-hal berevolusi dan URL menjadi virtual (lihat penulisan ulang url misalnya) membuat sumber daya kehilangan arti awal folder / subforder / file yang sebenarnya dan karenanya, kata kerja tindakan CRUD yang dicakup oleh metode protokol HTTP (GET, POST, PUT / PATCH, DELETE) kehilangan jejak .
Mari kita ambil contoh:
Di sisi kiri tidak tertulis metode HTTP, pada dasarnya tidak masalah (POST dan GET sudah cukup) dan di sisi kanan metode HTTP yang sesuai digunakan.
Sisi kanan terlihat elegan, bersih dan profesional. Bayangkan sekarang Anda harus mempertahankan kode yang telah menggunakan API elegan dan Anda harus mencari di mana panggilan penghapusan dilakukan. Anda akan mencari "api / entitas" dan di antara hasil Anda harus melihat mana yang melakukan DELETE. Atau lebih buruk lagi, Anda memiliki programmer junior yang secara tidak sengaja menukar PUT dengan DELETE dan karena URL adalah hal yang sama terjadi.
Menurut pendapat saya, meletakkan kata kerja tindakan di URL memiliki keunggulan dibandingkan menggunakan metode HTTP yang sesuai untuk tindakan itu meskipun tidak begitu elegan. Jika Anda ingin melihat di mana delete call dibuat, Anda hanya perlu mencari "api / entity / delete" dan Anda akan langsung menemukannya.
Membangun API tanpa seluruh larik metode HTTP membuatnya lebih mudah untuk dikonsumsi dan dipelihara setelahnya
sumber
Metode Aman: Dapatkan Sumber Daya / Tidak ada modifikasi dalam sumber daya
Idempoten: Tidak ada perubahan dalam status sumber daya jika diminta berkali-kali
Metode Tidak Aman: Buat atau Perbarui Sumber Daya / Modifikasi dalam sumber daya
Non-Idempoten: Perubahan dalam status sumber daya jika diminta berkali-kali
Sesuai dengan kebutuhan Anda:
1) Untuk operasi yang aman dan idempoten (Ambil Sumber Daya) gunakan --------- GET METHOD
2) Untuk operasi yang tidak aman dan non-idempoten (Sisipkan Sumber Daya) gunakan --------- METODE POS
3) Untuk operasi yang tidak aman dan idempoten (Perbarui Sumber Daya) gunakan --------- PUT METHOD
3) Untuk operasi yang tidak aman dan idempoten (Hapus Sumber Daya) gunakan --------- DELETE METHOD
sumber