Apa cara "RESTful" untuk menambahkan operasi non-CRUD ke layanan RESTful? Katakanlah saya memiliki layanan yang memungkinkan akses CRUD ke catatan seperti ini:
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
Jika saya ingin mengubah warna mobil, saya akan melakukannya POST /api/car/123
dan menyertakan variabel POST untuk warna baru.
Tapi katakanlah saya ingin membeli mobil, dan pengoperasian itu lebih rumit daripada sekadar memperbarui properti "mobil milik" catatan "pengguna". Apakah tenang untuk melakukan sesuatu seperti POST /api/car/123/purchase
, di mana "pembelian" pada dasarnya adalah nama metode? Atau haruskah saya menggunakan kata kerja HTTP khusus, sepertiPURCHASE
bukan POST
?
Atau apakah operasi non-CRUD sama sekali di luar cakupan REST?
PATCH /api/car/123
dan mengirimkan parameter warna ATAU gunakanPUT /api/car/123
dan kirim seluruh objek mobil. POST akan menyimpulkan bahwa Anda sedang membuat mobil baru dan mungkin tidak boleh menyertakan id di akhir URL