В чем разница между HTTP-методами GET и PATCH?

«В чем разница между HTTP-методами GET и PATCH?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.