REST PATCH для всех ресурсов данного типа

У меня есть набор ресурсов в REST API, скажем так:

GET /folders
[{ "id": "x", "watched": true }, { "id": "y", "watched": true }, ...]

Я реализовал команду «остановить просмотр» в виде ПАТЧА:

PATCH /folders/x { "watched": false }

Как правильно реализовать «перестать смотреть все папки»? я думал о

PATCH /folders { "watched": false }

Но я не уверен, что это имеет смысл (сама коллекция не имеет свойства watched).

Или это вообще не должно реализовываться на уровне API (а вместо этого повторяться клиентом)?
Хотя это может показаться неэффективным.


person Andrey Shchekin    schedule 02.09.2014    source источник


Ответы (1)


Я думаю, что PATCH /folders { "watched": false } вполне уместно. Позвольте реализации решить, как папки будут исправлены с заданным представлением предполагаемого состояния ресурса (вашего JSON). Нет никаких ограничений на то, как должны выглядеть представления ресурсов, они должны быть описательными, поэтому в этом случае они должны иметь стандартный тип содержимого, вот и все. (Ответы GET могут быть разными.)

Я не рекомендую вам перебирать коллекцию вашим клиентом, так как она не является атомарной, она может потерять связь в любой момент. Вы должны отправить только один запрос об этом.

person inf3rno    schedule 09.09.2014