Для изменения статуса я думаю, что подход RESTful состоит в том, чтобы использовать логический подресурс, который описывает состояние ресурсов. Это IMO довольно полезно и чисто, когда у вас уменьшенный набор статусов. Это делает ваш API более выразительным, не заставляя существующие операции для вашего ресурса клиента.
Пример:
POST /customer/active <-- Providing entity in the body a new customer
{
... // attributes here except status
}
Служба POST должна вернуть вновь созданного клиента с идентификатором:
{
id:123,
... // the other fields here
}
GET для созданного ресурса будет использовать расположение ресурса:
GET /customer/123/active
GET / клиент / 123 / неактивный должен вернуть 404
Для операции PUT, без предоставления объекта Json, он просто обновит статус
PUT /customer/123/inactive <-- Deactivating an existing customer
Предоставление объекта позволит вам обновлять содержимое клиента и одновременно обновлять статус.
PUT /customer/123/inactive
{
... // entity fields here except id and status
}
Вы создаете концептуальный подресурс для своего клиентского ресурса. Это также согласуется с определением ресурса Роя Филдинга: «... ресурс - это концептуальное отображение набора сущностей, а не сущности, которая соответствует сопоставлению в любой конкретный момент времени ...». В этом случае концептуальное сопоставление активный клиент-клиент со статусом = ACTIVE.
Операция чтения:
GET /customer/123/active
GET /customer/123/inactive
Если вы выполняете эти вызовы один раз после того, как другой из них должен вернуть статус 404, успешный вывод может не включать статус, поскольку он неявный. Конечно, вы все равно можете использовать GET / customer / 123? Status = ACTIVE | INACTIVE для прямого запроса ресурса клиента.
Операция DELETE интересна, так как семантика может сбивать с толку. Но у вас есть возможность не публиковать эту операцию для этого концептуального ресурса или использовать ее в соответствии с вашей бизнес-логикой.
DELETE /customer/123/active
Чтобы ваш клиент мог перейти в статус УДАЛЕНО / ОТКЛЮЧЕН или в противоположный статус (АКТИВНЫЙ / НЕАКТИВНЫЙ).