StudyCode
PUT — полная замена ресурса: клиент присылает объект целиком, и он полностью заменяет то, что было; пропущенные поля считаются удалёнными/сброшенными. PATCH — частичное обновление: присылаются только изменяемые поля, остальные не трогаются. PUT по спецификации идемпотентен (повтор даёт то же состояние), PATCH — не обязан. На практике для форм редактирования чаще подходит PATCH: не нужно гонять весь объект и нет риска затереть поля, о которых клиент не знает.
// Было: { name: "Аня", email: "a@m.ru", bio: "Люблю котов" }
// PUT — полная замена
await fetch('/api/users/7', {
method: 'PUT',
body: JSON.stringify({ name: 'Аня', email: 'new@m.ru' }),
});
// Стало: { name: "Аня", email: "new@m.ru" }
// bio ПРОПАЛО — его не было в теле запроса!
// PATCH — частичное обновление
await fetch('/api/users/7', {
method: 'PATCH',
body: JSON.stringify({ email: 'new@m.ru' }),
});
// Стало: { name: "Аня", email: "new@m.ru", bio: "Люблю котов" }
// изменилось только присланное поле