🏠 | 💻 PC | Web |

Отличие метода PUT от POST

Этот вопрос возникает либо на собеседованиях либо при проектировании своего API.

Меня спрашивали как минимум один раз.

В этой статье вы можете изучить несколько версий ответа на этот вопрос.

1. Новизна

POST это отправка новых данных на сервер.

PUT вносит изменения в уже имеющуюся на сервере информацию.

2. Тело

Метод POST подразумевает, что Вы передаёте данные в теле запроса.

POST http://urn.su:8080/resource1/eventslist

Body:

{
  "itemID":"AB45636",
  "groupNo":"XZ100329",
  "weight":1395.00,
  "Distance":385.40,
  "Time":"2017-01-01T11:20:36.000+0000",
  "delayed":true
}

Метод PUT подразумевает, что Вы передаёте всё, что нужно в URL. Тела запроса нет.

PUT http://www.answerit.ru:8080/api/order/<int:put_id>

Аргумент против этой версии:

HTTP 1.1 допускает наличие тела вообще у всех запросов.

У GET, HEAD и DELETE семантика тела запроса не опеределена, поэтому тело игнорируется, а вот у PUT с этим всё в порядке.

3. Идемпотентность

Метод PUT должен быть идемпотентным, то есть несколько одинаковых PUT на один endpoint не меняют состояния API.

POST не обязан быть идемпотентным

4. CRUD

PUT вписывается в CRUD и покрывает Create и Update. POST не вписывается в CRUD.

Налицо противоречие с 1 где создание новых данных приписывается POST.

Потренироваться отправлять запросы PUT и POST можно на странице моего учебника

Увидеть своими глазами

Если хотите увидеть как HTTP методы выглядят изнутри - настройте telnet и попередавайте разные запросы.

Как настроить telnet читайте здесь .

В качестве альтернативы telnet можете открыть сокет .

Резюме

Исходя из имеющейся информации разница между POST и PUT может меняться в зависимости от реализации серверной части.

Если принципиальное отличие POST и PUT от GET очевидно - они что-то добавляют на сервер а GET только получает информацию, то между PUT и POST всё не так очевидно - лучше уточнить у разработчика. Некоторые и на GET умудряются навешать непойми чего.

🛠 Полезные советы
🖽 Html
🖌 CSS
Joomla
UTM-метки
URLencode
Переадресация страниц сайта
Адаптивный дизайн сайтов
Настройка почтового ящика на Яндекс
Какой хостинг выбрать
Как перенести сайт
Яндекс Метрика
Разница между POST и PUT
Word Press
SEO
Тестирование сайта
A numeric character reference expanded to the C1 controls range.
JavaScript
.webp
Flask
Django
Как указать каноническую страницу сайта
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: