Назад к вопросам
Junior
77
questionbank
Расскажите о методе PUT в REST API.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Метод PUT используется для создания или обновления ресурса по указанному URI.
Ключевые особенности:
- Идемпотентность: Многократное выполнение одного и того же PUT-запроса с тем же телом приведет к одному и тому же состоянию ресурса на сервере (хотя ответ от сервера может отличаться).
- Полное замещение: PUT-запрос отправляет полную новую репрезентацию ресурса, заменяя собой существующую.
- Создание или обновление: Если ресурс по указанному URI не существует, PUT создает его. Если существует — обновляет. Отсутствие ресурса при успешном PUT-запросе приводит к созданию, что обычно возвращает статус 201 Created. Обновление существующего ресурса обычно возвращает 200 OK или 204 No Content (если в ответе нет тела).
Типичные сценарии использования:
- Обновление полного профиля пользователя.
- Создание ресурса, если клиент определяет его URI.
Пример PUT-запроса:
PUT /users/123 HTTP/1.1
Host: api.example.com
Content-Type: application/json
{
"id": 123,
"name": "Новое Имя",
"email": "new.email@example.com"
}
Сервер получит этот запрос и либо создаст пользователя с id=123, либо полностью заменит информацию о пользователе с этим ID данными из тела запроса.
PUT отличается от POST следующим:
- PUT используется для обновления или создания ресурса по известному URI, который определяет клиент. POST используется для создания ресурса, где сервер определяет URI нового ресурса, или для других действий, которые не подпадают под другие HTTP-методы.
- PUT идемпотентен, POST — нет. Многократные POST-запросы с одним и тем же телом могут создать несколько одинаковых ресурсов или вызвать разные побочные эффекты.
Таблица сравнения PUT и POST:
| Характеристика | PUT | POST |
|---|---|---|
| Назначение | Создание или обновление ресурса | Создание ресурса, отправка данных |
| Идемпотентность | Да | Нет |
| Определение URI | Клиентом | Сервером |
| Влияние на ресурс | Заменяет или создает полностью | Обычно добавляет или вызывает действие |