Чем метод PATCH от PUT отличается?
Ответы
Это частый вопрос на собеседованиях. Отличаются они вот чем:
- PUT – заменяет весь ресурс новым (если поле не указано — оно затирается).
- PATCH – изменяет только указанные поля (частичное обновление).
Допустим, у нас есть ресурс юзера:
{
"id": 1,
"name": "Alice",
"email": "alice@mail.com"
}
PUT
Запрос:
curl -X PUT http://localhost:8080/users/1 \
-H "Content-Type: application/json" \
-d '{
"name": "Bob"
}'
Результат: ресурс перезапишется полностью, email
пропадёт (если сервер не подставляет старое значение сам).
{
"id": 1,
"name": "Bob",
"email": null
}
PATCH
Запрос:
curl -X PATCH http://localhost:8080/users/1 \
-H "Content-Type: application/json" \
-d '{
"name": "Bob"
}'
Результат: изменится только name
, остальные поля останутся.
{
"id": 1,
"name": "Bob",
"email": "alice@mail.com"
}
Пример с корзиной:
Исходный ресурс корзины:
{
"id": 10,
"items": [
{ "productId": 100, "qty": 1 },
{ "productId": 200, "qty": 2 }
]
}
PUT
curl -X PUT http://localhost:8080/carts/10 \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "productId": 100, "qty": 5 }
]
}'
Результат: корзина заменена полностью, второй товар пропал.
{
"id": 10,
"items": [
{ "productId": 100, "qty": 5 }
]
}
PATCH
curl -X PATCH http://localhost:8080/carts/10 \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "productId": 100, "qty": 5 }
]
}'
Результат: изменилось только количество у товара 100
, остальные товары остались.
{
"id": 10,
"items": [
{ "productId": 100, "qty": 5 },
{ "productId": 200, "qty": 2 }
]
}
0
0