В чем разница между основными методами HTTP-запросов?

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

Ответ

HTTP-методы (или глаголы) определяют действие, которое клиент хочет выполнить с ресурсом на сервере.

Основные методы и их назначение:

  1. GET — запрашивает представление ресурса. Безопасный и идемпотентный.

    GET /api/users/123 HTTP/1.1
    Host: example.com
    • Не имеет тела запроса.
    • Используется для чтения данных.
  2. POST — отправляет данные для создания нового ресурса. Не идемпотентный.

    POST /api/users HTTP/1.1
    Content-Type: application/json
    {"name": "Alice"}
    • Имеет тело запроса с данными.
    • Сервер определяет URI для нового ресурса.
  3. PUT — полностью заменяет ресурс по указанному URI. Идемпотентный.

    PUT /api/users/123 HTTP/1.1
    Content-Type: application/json
    {"name": "Alice Updated"}
    • Если ресурс существует — обновляется, если нет — может создаваться.
  4. PATCH — применяет частичные изменения к ресурсу. Идемпотентный (должен быть).

    PATCH /api/users/123 HTTP/1.1
    Content-Type: application/json
    [{"op": "replace", "path": "/name", "value": "Bob"}]
  5. DELETE — удаляет указанный ресурс. Идемпотентный.

    DELETE /api/users/123 HTTP/1.1
Сравнительная таблица: Метод Назначение Тело запроса Идемпотентность Безопасность
GET Получить ресурс Нет Да Да
POST Создать ресурс Да Нет Нет
PUT Заменить ресурс Да Да Нет
PATCH Частично обновить Да (Да) Нет
DELETE Удалить ресурс Нет Да Нет

Идемпотентность означает, что многократное выполнение одного и того же запроса дает идентичный результат. Безопасность означает, что метод не изменяет состояние сервера.