Ответ
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).