(maaf, pertama kali saya melalui saya melewatkan / edit / dan / delete / in (2) ...)
Gagasan URI adalah bahwa itu adalah pengidentifikasi sumber daya yang dapat dialamatkan , bukan doa metode . Jadi URI harus menunjuk ke sumber daya tertentu. Dan jika Anda menghormati URI, Anda harus selalu mendapatkan sumber daya yang sama.
Artinya, Anda harus memikirkan URI dengan cara yang sama seperti Anda memikirkan Kunci Utama dari sebuah baris dalam basis data. Ini secara unik mengidentifikasi sesuatu: Pengidentifikasi Sumber Daya Universal.
Jadi, apakah Anda menggunakan jamak atau tunggal, URI harus menjadi pengidentifikasi daripada doa . Apa yang Anda coba lakukan ada dalam metode ini, yaitu: DAPATKAN (dapatkan), PUT (buat / perbarui), HAPUS (hapus) atau POST (semuanya).
Jadi "/ item / delete / 123" istirahat REST karena itu tidak menunjuk ke sumber daya, itu lebih merupakan doa metode.
(Juga, secara semantik, Anda harus dapat MENDAPATKAN URI, memutuskan itu sudah ketinggalan zaman, dan kemudian HAPUS URI yang sama - karena itu adalah pengidentifikasi. Jika GET URI tidak memiliki "/ delete /" dan DELETE melakukannya, maka itu bertentangan dengan semantik HTTP. Anda menyiarkan 2 atau lebih URI per sumber daya tempat 1 akan melakukannya.)
Sekarang, cheatnya adalah ini: tidak ada definisi nyata yang jelas tentang apa yang bisa dan bukan sumber daya, jadi penghindaran yang umum di REST adalah untuk mendefinisikan "kata benda pemrosesan" dan arahkan URI ke sana. Itu cukup banyak permainan kata, tetapi memuaskan semantik.
Jadi, jika, misalnya, Anda benar-benar tidak dapat menggunakan ini karena beberapa alasan:
DELETE /items/123
Anda dapat mendeklarasikan kepada dunia bahwa Anda memiliki sumber daya pemrosesan dan penggunaan "penghapusan"
POST /items/deletor { id: 123 }
Sekarang, itu sangat mirip dengan RPC (Remote Procedure Call), tetapi jatuh melalui celah besar klausa "pemrosesan data" spesifikasi POST yang disebutkan dalam spesifikasi HTTP.
Namun, melakukan itu agak luar biasa, dan jika Anda dapat menggunakan PUT umum untuk membuat / memperbarui, HAPUS untuk menghapus, dan POST untuk menambahkan, membuat, dan segala sesuatu yang lain, maka Anda harus melakukannya , karena itu adalah penggunaan HTTP yang lebih standar. Tetapi jika Anda memiliki case rumit seperti "commit" atau "publish" atau "redact", maka case untuk menggunakan kata benda prosesor memenuhi purest REST dan masih memberi Anda semantik yang Anda butuhkan.
PUT
danDELETE
, saya lebih suka menambahkannya ke jalur, tidak membedakannya dengan string kueri. Ini bukan modifikasi string kueri untuk operasi yang ada; ini adalah operasi terpisah.