Если вы отметите RF C 7231, раздел 4.3.4 PUT , вы увидите, что
4.3.4. PUT
Метод PUT запрашивает, чтобы состояние целевого ресурса было создано или заменено на состояние, определяемое представлением, заключенным в полезную нагрузку сообщения запроса.
В простом В терминах, PUT - это когда вы создаете ресурс по URL или полностью его заменяете (простой пример загрузки файла).
В вашем случае автор не является сущностью сам по себе (я вижу, что это просто String
и список @ElementCollection
). Это означает, что когда вы добавляете автора, вы изменяете сущность User
. то есть вы не создаете или заменяете «Пользователь». Поэтому PUT не подходит для добавления автора.
PUT также не для удаления объекта. Вы должны рассмотреть DELETE для этого.
Теперь RF C 7231 В разделе 4.3.4 POST говорится следующее:
4.3.3. POST
Метод POST запрашивает, чтобы целевой ресурс обработал представление
, заключенное в запросе, согласно семантике
собственной спецификации ресурса. Например, POST используется для следующих функций
(среди прочих):
- Предоставление блока данных, такого как поля, введенные в форму HTML, для обработки данных process;
- Публикация сообщения на доске объявлений, в группе новостей, списке рассылки, блоге или подобной группе статей;
- Создание нового ресурса, который еще не был идентифицирован исходным сервером; и
- Добавление данных к существующему представлению (ям) ресурса
Опять же, простыми словами, POST может быть запросом к инициировать действие на сервере. Последние два в приведенном выше списке примеров относятся к вашему делу - вы добавляете или создаете автора. Это означает, что POST подходит для добавления автора.
Вывод:
Используйте POST и DELETE для добавления и удаления авторов.
В примечании к справке вы, вероятно, должны избавиться от add
и remove
в конце URL. Пусть методы HTTP POST и DELETE различают действия. Так и должно быть
@PostMapping("/api/profile/author")
@DeleteMapping("/api/profile/author")