Tôi đang viết một dịch vụ RESTful cho một hệ thống quản lý khách hàng và tôi đang cố gắng tìm ra cách thực hành tốt nhất để cập nhật hồ sơ một phần. Ví dụ, tôi muốn người gọi có thể đọc bản ghi đầy đủ với yêu cầu GET. Nhưng để cập nhật, chỉ một số thao tác nhất định trong hồ sơ được cho phép, như thay đổi trạng thái từ ENABLED sang DISABLED. (Tôi có nhiều kịch bản phức tạp hơn thế này)
Tôi không muốn người gọi gửi toàn bộ hồ sơ chỉ với trường được cập nhật vì lý do bảo mật (nó cũng có cảm giác như quá mức cần thiết).
Có cách nào được đề xuất để xây dựng các URI không? Khi đọc sách REST, các cuộc gọi kiểu RPC dường như được tán thành.
Nếu cuộc gọi sau trả về hồ sơ khách hàng đầy đủ cho khách hàng với id 123
GET /customer/123
<customer>
{lots of attributes}
<status>ENABLED</status>
{even more attributes}
</customer>
Tôi nên cập nhật trạng thái như thế nào?
POST /customer/123/status
<status>DISABLED</status>
POST /customer/123/changeStatus
DISABLED
...
Cập nhật : Để tăng thêm câu hỏi. Làm thế nào để kết hợp 'cuộc gọi logic kinh doanh' vào api REST? Có một cách đồng ý để làm điều này? Không phải tất cả các phương pháp là CRUD theo bản chất. Một số phức tạp hơn, như ' sendEmailToCustomer (123) ', ' mergeCustomers (123, 456) ', ' CountCustomers () '
POST /customer/123?cmd=sendEmail
POST /cmd/sendEmail?customerId=123
GET /customer/count
POST
Roy Fielding: roy.gbiv.com/untangled/2009/it-is-okay-to-use-post trong đó ý tưởng cơ bản là: nếu có 't một phương pháp (chẳng hạn nhưGET
hoặcPUT
) phù hợp lý tưởng với việc sử dụng hoạt động của bạnPOST
.