В чем практическая разница между PUT и POST?

Всю теорию (стак, мозила мдм) читал.
В теории, POST всегда изменяет состояние, а PUT нет (обновляет).
Хотелось бы это посмотреть на простом примере - разницу поведения PUT и POST.
Пишу на PHP. POST использую постоянно, PUT никогда.
  • Вопрос задан
  • 8064 просмотра
Пригласить эксперта
Ответы на вопрос 3
vabka
@vabka
Токсичный шарпист
PUT - идемпотентный (браузеры и прокси считают, что такой запрос повторять безопасно)
POST - неидемпотентный (наоборот)
Остальное уже зависит от реализации.

Часто встречается такое поведение:
PUT - изменение всех полей объекта или создание объекта с заранее известным id
POST - создание нового объекта (при неизвестном id) или вызов какой-то процедуры

В принципе, в том что вы не используете PUT нет ничего плохого
Ответ написан
Комментировать
insighter
@insighter
-First time? - Huh? (C#, React, JS)
Ну вот что написано на ресурсе где это надо смотреть в первую очередь

Разница между PUT и POST состоит в том, что PUT является идемпотентным: повторное его применение даёт тот же результат, что и при первом применении (то есть у метода нет побочных эффектов), тогда как повторный вызов одного и того же метода POST может иметь такие эффекты, как например, оформление одного и того же заказа несколько раз.

https://developer.mozilla.org/ru/docs/Web/HTTP/Met...

Случай 1.
Допустим у вас есть WebAPI которое позволяет добавлять-создавать пользователей и их комментарии.
Когда будете добавлять нового пользователя можно использовать PUT запрос. Если пользователь уже есть в базе, то запрос будет возвращать Conflict/BasRequest. Иначе будет пользователь будет добавляться. Многократное [случайное|ошибочное] выполнение одного и того же запроса не вызывает "side effect".

Случай 2.
Добавление комментариев, лучше использовать POST запрос, т.к. многократное запроса будет создавать новые комментарии всегда.
Ответ написан
Комментировать
paran0id
@paran0id
Умный, но ленивый
https://www.ietf.org/rfc/rfc2616.txt

The fundamental difference between the POST and PUT requests is
reflected in the different meaning of the Request-URI. The URI in a
POST request identifies the resource that will handle the enclosed
entity. That resource might be a data-accepting process, a gateway to
some other protocol, or a separate entity that accepts annotations.
In contrast, the URI in a PUT request identifies the entity enclosed
with the request -- the user agent knows what URI is intended and the
server MUST NOT attempt to apply the request to some other resource.
If the server desires that the request be applied to a different URI,
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы