Gymterview
junior

В чём разница между PUT и POST?

PUT и POST — два HTTP-метода для создания и обновления ресурсов, различающиеся семантикой, идемпотентностью и тем, кто определяет URI нового ресурса.

Характеристика POST PUT
Назначение Создание нового ресурса Создание или полная замена ресурса
URI Указывает на коллекцию Указывает на конкретный ресурс
Идемпотентность Нет Да
Кто определяет URI нового ресурса Сервер Клиент
Пример POST /api/users PUT /api/users/42

POST — клиент говорит серверу: «создай ресурс в коллекции, ты сам определи его идентификатор»:

Пример
POST /api/users HTTP/1.1
Content-Type: application/json

{"name": "Иван"}

Ответ:
HTTP/1.1 201 Created
Location: /api/users/42

PUT — клиент говорит серверу: «помести (или замени) ресурс по данному URI»:

Пример
PUT /api/users/42 HTTP/1.1
Content-Type: application/json

{"name": "Иван", "email": "ivan@example.com", "age": 30}

Ответ:
HTTP/1.1 200 OK     (если ресурс обновлён)
HTTP/1.1 201 Created (если ресурс создан)

Главное правило: если клиент знает URI ресурса и может его задать — используйте PUT. Если URI определяет сервер — используйте POST.

На собеседовании: ключевые отличия — идемпотентность и кто определяет URI. POST не идемпотентен, PUT идемпотентен. Частая ошибка — говорить, что POST только для создания, а PUT только для обновления (PUT может и создавать).