Ответ
HTTP метод PUT используется для полного обновления существующего ресурса или создания нового ресурса, если он не существует, по указанному URI. Он отправляет полную репрезентацию ресурса на сервер.
Основные характеристики и применение:
- Полное обновление: В отличие от
PATCH
, который изменяет только часть ресурса,PUT
заменяет весь ресурс целиком. Если в теле запроса отсутствуют какие-либо поля существующего ресурса, они будут удалены или сброшены до значений по умолчанию. - Создание ресурса: Если ресурс по указанному URI не существует,
PUT
может использоваться для его создания. Клиент сам определяет URI нового ресурса. - Идемпотентность:
PUT
является идемпотентным методом. Это означает, что многократное выполнение одного и того жеPUT
запроса приведет к одному и тому же состоянию на сервере, без дополнительных побочных эффектов. Это делает его безопасным для повторных попыток.
Примеры использования:
- Обновление профиля пользователя: Если у вас есть ресурс
/users/123
, и вы хотите обновить все данные пользователя, вы отправляетеPUT
запрос с полным JSON-объектом пользователя. - Создание файла по известному пути: Загрузка файла на сервер по конкретному пути, например,
/files/document.pdf
.
Пример HTTP PUT запроса (с использованием Python requests
):
import requests
# Предположим, у нас есть пользователь с ID 1
user_id = 1
api_url = f'https://api.example.com/users/{user_id}'
# Данные для полного обновления пользователя
updated_data = {
'name': 'Jane Doe',
'email': 'jane.doe@example.com',
'age': 35
}
# Отправка PUT запроса
response = requests.put(api_url, json=updated_data)
if response.status_code == 200: # OK
print(f"Ресурс {api_url} успешно обновлен.")
print(response.json())
elif response.status_code == 201: # Created
print(f"Ресурс {api_url} успешно создан.")
print(response.json())
else:
print(f"Ошибка при выполнении PUT запроса: {response.status_code}")
print(response.text)
Ожидаемые HTTP статусы:
200 OK
или204 No Content
: Ресурс успешно обновлен.201 Created
: Ресурс успешно создан (если его не существовало).400 Bad Request
: Некорректные данные в запросе.404 Not Found
: Ресурс не найден (если сервер не поддерживает создание через PUT).