Saya menulis layanan tenang untuk sistem manajemen pelanggan dan saya mencoba untuk menemukan praktik terbaik untuk memperbarui catatan secara parsial. Misalnya, saya ingin penelepon dapat membaca catatan lengkap dengan permintaan GET. Tetapi untuk memperbaruinya hanya operasi tertentu pada catatan yang diizinkan, seperti mengubah status dari ENABLED ke DISABLED. (Saya punya skenario yang lebih kompleks dari ini)
Saya tidak ingin penelepon menyerahkan seluruh catatan hanya dengan bidang yang diperbarui untuk alasan keamanan (rasanya juga berlebihan).
Apakah ada cara yang disarankan untuk membangun URI? Saat membaca buku REST, panggilan gaya RPC tampaknya disukai.
Jika panggilan berikut mengembalikan catatan pelanggan lengkap untuk pelanggan dengan id 123
GET /customer/123
<customer>
{lots of attributes}
<status>ENABLED</status>
{even more attributes}
</customer>
bagaimana saya harus memperbarui status?
POST /customer/123/status
<status>DISABLED</status>
POST /customer/123/changeStatus
DISABLED
...
Pembaruan : Untuk menambah pertanyaan. Bagaimana cara memasukkan 'panggilan logika bisnis' ke api REST? Apakah ada cara yang disepakati untuk melakukan ini? Tidak semua metode CRUD secara alami. Beberapa lebih kompleks, seperti ' sendEmailToCustomer (123) ', ' mergeCustomers (123, 456) ', ' countCustomers () '
POST /customer/123?cmd=sendEmail
POST /cmd/sendEmail?customerId=123
GET /customer/count
POST
dari Roy Fielding sendiri: roy.gbiv.com/untangled/2009/it-is-okay-to-use-post di mana ide dasarnya adalah: jika tidak ada metode (sepertiGET
atauPUT
) cocok untuk penggunaan operasi AndaPOST
.