Ответ
GET и PATCH — это HTTP-методы с разной семантикой согласно стандарту REST.
| Характеристика | GET | PATCH |
|---|---|---|
| Назначение | Получить (Retrieve) данные. Запрос ресурса. | Частично обновить (Update) ресурс. |
| Идемпотентность | Да. Многократный вызов возвращает одинаковый результат и не меняет состояние сервера. | Нет. Повторные вызовы с тем же телом могут приводить к разным состояниям. |
| Безопасность | Да. Не должен изменять состояние сервера. | Нет. Изменяет состояние ресурса на сервере. |
| Тело запроса | Обычно отсутствует (не имеет семантического значения). | Присутствует. Содержит инструкции для частичного обновления (например, JSON Patch). |
| Кешируемость | Да. Ответы часто кешируются. | Нет. Ответы обычно не кешируются. |
Примеры:
### GET: Получение информации о пользователе
GET /api/users/123 HTTP/1.1
Host: example.com
### Ответ
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 123,
"name": "Alice",
"email": "alice@example.com"
}
### PATCH: Частичное обновление пользователя (JSON Patch format)
PATCH /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json-patch+json
[
{ "op": "replace", "path": "/name", "value": "Alicia" },
{ "op": "add", "path": "/age", "value": 30 }
]
### Ответ
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 123,
"name": "Alicia",
"email": "alice@example.com",
"age": 30
}
Ключевое: GET — для чтения, PATCH — для частичного изменения. Для полной замены ресурса используется PUT.