Я пишу послугу 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? Чи є узгоджений спосіб зробити це? Не всі методи є CRUD за своєю природою. Деякі складніші, наприклад, " sendEmailToCustomer (123) ", " mergeCustomers (123, 456) ", " countCustomers () "
POST /customer/123?cmd=sendEmail
POST /cmd/sendEmail?customerId=123
GET /customer/count
POST
від самого Роя Філдінга: roy.gbiv.com/untangled/2009/it-is-okay-to-use-post, де основна ідея: якщо немає 'метод (такий якGET
абоPUT
) ідеально підходить для використання в операціїPOST
.