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 может и создавать).