#json #api #rest #http
#json #API #rest #http
Вопрос:
Я пытаюсь найти наилучший способ добавления нескольких пользователей в группу через REST API.
Прямо сейчас я думаю, что это лучший способ добавления одного пользователя за раз:
PUT /groups/123/{userID}
Затем, чтобы удалить пользователя из группы:
DELETE /groups/123/{userID}
Но как мне добавить несколько пользователей в группу одновременно? Будет ли это лучшим способом?
PUT /groups/123
Тело содержимого в виде массива:
[
"user1",
"user2",
"user3"
]
… и чтобы удалить пользователей из группы, я бы сделал то же самое с помощью DELETE
запроса.
Есть ли что-то «неправильное» в этой настройке, или есть ли лучший, более «стандартный для отрасли» способ сделать это?
Ответ №1:
Как РАЗМЕСТИТЬ несколько ресурсов через REST API
Вы этого не делаете — каждый запрос в HTTP имеет один и только один целевой ресурс; семантика запроса PUT заключается в том, что тело сообщения запроса является заменяющим представлением для ресурса.
Ресурсы — это обобщения документов.
Вполне разумно иметь документ, представляющий членов некоторой группы.
PUT /groups/123
[
"user1",
"user2",
"user3"
]
Этот запрос означает «замените вашу копию /groups/123 на эту копию». Это чисто команда редактирования документа.
Полезная работа, например, фактическое внесение изменений в список участников основной группы, является побочным эффектом того, что ваша копия документа выглядит как предоставленная копия. См. Webber 2011.
В этом стиле «удаление» пользователя из группы будет выглядеть как еще одно редактирование документа /groups/123
PUT /groups/123
[
"user1",
"user3"
]
Конечно, семантика удаленного создания не требуется; вместо этого вы могли бы сделать:
POST /groups/123
Please remove user1
или
POST /groups/123
action=addUseramp;id=user4
чтобы удалить пользователей из группы, я бы сделал то же самое с помощью запроса на УДАЛЕНИЕ
Осторожно — УДАЛЕНИЕ (например, PUT) означает что-то конкретное в HTTP, и это может быть не то, что вы имеете в виду.
Относительно небольшое количество ресурсов допускает метод УДАЛЕНИЯ
Семантика DELETE прочно связана с передачей документов через сетевой домен, а не с доменом «управление пользователями и группами».