Ответ
PATCH — это HTTP-метод для частичного обновления ресурса. В отличие от PUT, который заменяет ресурс целиком, PATCH позволяет изменять только указанные поля.
Пример на Go (с использованием net/http):
type User struct {
Name string `json:"name"`
Email string `json:"email"`
}
func updateUser(w http.ResponseWriter, r *http.Request) {
if r.Method != "PATCH" {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
var updates User
if err := json.NewDecoder(r.Body).Decode(&updates); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// Применяем только переданные поля (например, обновляем имя, если оно есть)
if updates.Name != "" {
currentUser.Name = updates.Name
}
// Аналогично для других полей...
}
Нюансы:
- Идемпотентность не гарантируется (в отличие от PUT).
- Сервер должен корректно обрабатывать частичные данные.
- Часто используется с
Content-Type: application/json-patch+jsonдля формата JSON Patch (RFC 6902).