Я пишу службу RESTful для системы управления клиентами, и я пытаюсь найти оптимальную практику для обновления записей частично. Например, я хочу, чтобы вызывающий мог прочитать полную запись с запросом GET. Но для его обновления допускаются только определенные операции над записью, такие как изменение статуса из ENABLED в DISABLED. (У меня более сложные сценарии, чем это)
Я не хочу, чтобы вызывающий абонент отправлял всю запись только с обновленным полем по соображениям безопасности (он также чувствует себя излишним).
Есть ли рекомендуемый способ создания URI? При чтении REST-книг вызовы стиля RPC кажутся неодобрительными.
Если следующий вызов возвращает полную запись клиента для клиента с идентификатором 123
GET /customer/123
<customer>
{lots of attributes}
<status>ENABLED</status>
{even more attributes}
</customer>
как мне обновить статус?
POST /customer/123/status
<status>DISABLED</status>
POST /customer/123/changeStatus
DISABLED
...
Обновить. Чтобы увеличить вопрос. Как включить "бизнес-логические вызовы" в REST api? Есть ли согласованный способ сделать это? Не все методы CRUD по своей природе. Некоторые из них более сложны, например "sendEmailToCustomer (123)", "mergeCustomers (123, 456)", "countCustomers()"
POST /customer/123?cmd=sendEmail
POST /cmd/sendEmail?customerId=123
GET /customer/count
Спасибо Франк