Прежде чем я решил задать этот вопрос, я долго искал ответ, но я не нашел удовлетворительного. (например, Примеры лучших веб-интерфейсов SOAP/REST/RPC и почему они вам нравятся? И что с ними не так?)
И проблема на самом деле довольно проста. У меня есть объект/ресурс с именем Account. Мой REST API поддерживает все CRUD с GET, POST, PUT и DELETE уже с правильной обработкой ошибок, кодами состояния и т.д.
Кроме того, однако я хочу открыть API ( "команда" ) для активации и деактивации выбранного ресурса учетной записи. Даже если "isActive" является свойством учетной записи, я не хочу использовать только обновление из моего CRUD всей учетной записи.
Я знаю, что легко нарушить принципы REST и сделать дизайн стиля RPC таким дизайном, как это:
PUT/api/account/: accountId/activate
PUT/api/account/: accountId/deactivate
Итак, каково наилучшее решение для этого варианта использования?
Моя нынешняя идея - использовать PUT и DELETE глаголы, подобные этому (чтобы рассматривать его как под-ресурс), как предлагается здесь http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#restful:
PUT/api/account/: accountId/isActive//для активации
DELETE/api/account/: accountId/isActive//для деактивации
Каковы ваши решения?