🏠 | 💻 PC | Web |

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

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

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

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

1. Новизна

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

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

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

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

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

3. Тело

Метод 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 с этим всё в порядке.

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 умудряются навешать непойми чего.

Если вас спросили о разнице между PUT и POST на собеседовании - отвечать советую 1 +2 или просто 1. То есть про новизну вариант должен прокатить и про идемпотентность тоже. 3 и 4 отвечать рисковано.

🛠 Полезные советы
🖽 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. Статьи можно расшарить в соцсетях, нажав на иконку сети: