Задать вопрос
nazarpc
@nazarpc
Open Source enthusiast

PUT & POST при написании API

Искал информацию о предназначении разных HTTP методов, всё вполне логично и очевидно кроме PUT и POST.
Второй считается методом общего назначения, и, пожалуй, используется чаще.
Но вот дилемма, а для чего же тогда использовать PUT, и имеет ли смысл использовать PUT/DELETE вместо единого POST?
Если DELETE используют для удаления — то что используют для создания/изменения? Логично было бы PUT/SET, но второго не существует.
Интересует авторитетный источник, либо статья авторитетного автора, c однозначным ответом, чтобы соответствовать каким-то хоть и не описанным официально стандартам.
  • Вопрос задан
  • 84008 просмотров
Подписаться 15 Оценить Комментировать
Ответ пользователя Yeah К ответам на вопрос (8)
Yeah
@Yeah
Кратко: POST — создание, PUT — обновление
Авторитетного источника применительно к REST не будет, так как REST, строго говоря, не определяет ни POST, ни PUT. REST просто допускает использование HTTP. Следовательно наиболее авторитетный источник по поводу POST/PUT — это спецификация HTTP 1.1:

The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.

The PUT method requests that the enclosed entity be stored under the supplied Request-URI.

То есть POST используется для создания подчиненной сущности, а PUT для сохранения сущности.
POST в случае успеха всегда должен возвращать статус 201 (Created) и Location на новый ресурс.
PUT же может возвращать как 201 (если ресурс не найден), так и 204 (No Content) — если ресурс обновлялся.
Ответ написан