Ответ
Да, метод PATCH предназначен именно для частичного обновления ресурса. Это позволяет изменять одно или несколько полей, в том числе разных типов, в рамках одного запроса, не передавая объект целиком.
Принцип работы:
Клиент отправляет на сервер только те поля, которые необходимо изменить. Сервер применяет эти изменения к существующему ресурсу, оставляя остальные поля нетронутыми. Это снижает объем передаваемых данных по сравнению с PUT.
Пример на Python с requests:
Предположим, нужно обновить имя пользователя и его статус активности.
import requests
import json
# URI конкретного ресурса
url = 'https://api.example.com/users/123'
# Данные для частичного обновления
payload = {
'full_name': 'John Doe', # string
'is_active': False # boolean
}
headers = {'Content-Type': 'application/json'}
response = requests.patch(url, data=json.dumps(payload), headers=headers)
print(response.status_code)
print(response.json())
Ключевые моменты:
- Цель: Частичное обновление. Идеально для изменения 1-2 полей в большом объекте.
- Идемпотентность:
PATCHне является идемпотентным по своей природе, в отличие отPUT, так как результат повторного запроса может отличаться (например, если операция — инкремент значения). - Формат: Для сложных операций (добавление в массив, удаление поля) часто используется стандарт JSON Patch (RFC 6902) с Content-Type
application/json-patch+json.