Давайте предположим, что у меня есть две сущности - команда проекта и сотрудник. Каждый сотрудник может входить в состав нескольких команд, и в каждой команде может быть несколько сотрудников. Мне нужно предоставить REST API для управления командами, сотрудниками и отношениями между ними.
Я выделил 3 ресурса - команду, сотрудника и участника (связь между командой и сотрудником), который является подресурсом команды. Причина, по которой я выбрал член в качестве подресурса, основана исключительно на жизненном цикле этого ресурса. Каждый раз, когда команда удаляется, участники удаляются, так как они не имеют значения вне самой команды.
Я выставляю следующие API (соответствующие):
POST /teams
создает новую запись команды с именем, идентификатором отдела и т. Д.
POST /teams/{name}/members
создает связь между командой, идентифицированной по имени, и конкретным сотрудником, поэтому входные данные содержат идентификатор сотрудника
Мне также нужно предоставить API для обновления идентификатора отдела и других атрибутов команды в одном запросе. Похоже, PUT - естественный выбор, но семантика PUT довольно ясна - мне нужно заменить весь ресурс, что в данном случае означает также замену всех подресурсов членов.
Какой метод (или подход) следует использовать, когда я хочу обновить только атрибуты команды, сохраняя ассоциации членов? Пожалуйста, имейте в виду, что я также хочу, чтобы этот запрос был идемпотентным.