E
E
Evgeny Ivanov2022-01-20 11:52:58
Web servers
Evgeny Ivanov, 2022-01-20 11:52:58

What is the practical difference between PUT and POST?

I read the whole theory (stack, mozilla mdm).
In theory, POST always changes state, while PUT does not (updates).
I would like to see this with a simple example - the difference in the behavior of PUT and POST.
I write in PHP. I use POST all the time, never PUT.

Answer the question

In order to leave comments, you need to log in

3 answer(s)
Василий Банников, 2022-01-20
@vabka

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

I
insighter, 2022-01-20
@insighter

Ну вот что написано на ресурсе где это надо смотреть в первую очередь

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

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

P
paran0id, 2022-01-20
@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,

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question