🏠 | 💻 PC | Web |

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

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

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

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

1. Новизна

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

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

2. Тело

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

POST http://eth1.ru: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
Как указать каноническую страницу сайта
Share in social media: