RESTful API обновляет членов группы - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть два ресурса: Group и Item.Каждый Item принадлежит определенному Group и имеет поле status.Я хочу иметь возможность обновлять статус для каждого Item в Group до inactive в одном вызове API.Это единственное изменение статуса, которое я хочу - я не хочу менять его на active или что-то в этом роде.

Что такое RESTful способ сделать это?Я знаю, что глаголы в url нахмурились, поэтому /api/groups/<group_id>/deactivate-items было бы не хорошо.PATCH /api/groups/<group_id>/items с полезной нагрузкой status='inactive' будет уместно в REST?

1 Ответ

1 голос
/ 07 апреля 2019

Что такое RESTful способ сделать это?

Подумайте, как бы вы сделали это с веб-сайтом.

Возможно, вы получите какую-нибудь страницу, описывающую группу;где-то на этой странице будет какой-то семантический намек, говорящий «сделать всех членов группы неактивными, отправьте эту форму. Если форма была отправлена, то ваш сервер будет отвечать за выполнение реальной работы, и вы отправите обратностраница, описывающая то, что только что произошло, со ссылками на другие интересные вещи.

Поскольку браузеры понимают HTTP и HTML, все это может быть сделано с использованием любых идентификаторов, предоставленных сервером. Сервер может изменить действиеформы, потому что браузер просто выполняет обработку формы, как описано в стандарте HTML, и использует target-uri, описанный метаданными формы.

Поскольку идентификатор может быть любым, вы можете воспользоватьсяинтересного свойства - небезопасные методы запроса (включая PUT, POST, DELETE) сделать недействительными локально кэшированные ресурсы при успешном завершении, поэтому одной интересной возможностью будет отправка данных формы обратно в /api/groups/<group_id> и аннулирование любого более раннего копированияes этой страницы.

Будет ли PATCH / api / groups // элементы с полезной нагрузкой status = 'inactive' соответствовать REST?

Может быть - это зависитчто такое /api/groups/<group_id>/items.

Ключевым моментом, который следует иметь в виду при использовании REST, является то, что ваша модель ресурсов - это не модель вашего домена, а не модель данных.Ресурсы поддерживают протоколы, которые мы хотим предоставить клиенту.

Подробнее об этом см. Доклад Джима Уэббера 2011 года .

...