Это хорошее соглашение, чтобы добавить параметр в метод PUT? - PullRequest
0 голосов
/ 03 июля 2019

скажем, метод put может вернуть поле includeExtraTitle по заданному параметру Однако стоит ли добавлять параметр в метод PUT? Это хорошая практика?

@PutMapping(value = "/articles/{articleId}") 
Article put(@RequestParam(value = "includeExtraTitle", defaultValue = "false") boolean includeExtraTitle)

Ответы [ 2 ]

1 голос
/ 03 июля 2019
/articles/{articleId}?includeExtraTitle=true

- это прекрасный идентификатор ресурса.

PUT - это метод в едином интерфейсе, поэтому применение семантики PUT к этому ресурсу хорошо (если вы решите, что это не поддерживается)., вы бы ответили 405 Метод не разрешен ).

/articles/{articleId}
/articles/{articleId}?includeExtraTitle=true
/articles/{articleId}?includeExtraTitle=false

Вы должны понимать, что, с точки зрения клиента, это идентификаторы для различных Ресурсы.PUT /articles/{articleId}?includeExtraTitle=false не сделает недействительной локально кэшированную копию клиента /articles/{articleId}, поскольку идентификаторы не совпадают.

Тот факт, что эти три ресурса используют одну и ту же "конечную точку""это случайность вашей реализации, скрытая от клиентов за единым интерфейсом.

Совершенно нормально, хотя и не обязательно, когда один ресурс имеет несколько представлений.Поэтому убедитесь, что ваш вариант использования не подходит для изменения типа контента, а не для изменения URI.

1 голос
/ 03 июля 2019

Да, это абсолютно хороший подход.

Добавление параметров для типов HTTP-запросов, таких как POST, PUT и т. Д., Совершенно нормально и рекомендуется.

...