Методы HTTP: GET, POST, PUT, DELETE, PATCH

HTTP-методы: GET, POST, PUT, DELETE, PATCH

Введение

HTTP-методы (их ещё называют HTTP-глаголы) определяют, что именно клиент хочет сделать с ресурсом на сервере. Правильное использование методов — основа REST API. Как тестировщик, ты должен знать, какой метод ожидает каждый endpoint, и проверять, что неправильные методы корректно отклоняются.


GET — получить данные

  • Назначение: получить ресурс или список ресурсов.
  • Тело запроса: отсутствует.
  • Идемпотентный: да (несколько одинаковых запросов дают тот же результат).
  • Безопасный (safe): да (не изменяет состояние сервера).
GET /api/users/42
Authorization: Bearer eyJhbGci...

Ответ: 200 OK + данные пользователя в теле.


POST — создать ресурс

  • Назначение: создать новый ресурс.
  • Тело запроса: есть (данные нового ресурса).
  • Идемпотентный: нет (повторный запрос создаёт дубликат).
  • Безопасный: нет.
POST /api/users
Content-Type: application/json

{"name": "Анна", "email": "anna@test.com"}

Ответ: 201 Created + созданный объект в теле.


PUT — полное обновление ресурса

  • Назначение: заменить ресурс целиком.
  • Тело запроса: есть (полный объект).
  • Идемпотентный: да (отправить один раз или десять — результат одинаков).
  • Безопасный: нет.
PUT /api/users/42
Content-Type: application/json

{"name": "Анна Иванова", "email": "anna@test.com", "role": "admin"}

Ответ: 200 OK или 204 No Content.

Важно: при PUT нужно отправить все поля. Поля, которые не указаны, могут быть сброшены в null.


PATCH — частичное обновление

  • Назначение: обновить часть ресурса.
  • Тело запроса: есть (только изменённые поля).
  • Идемпотентный: не обязательно (зависит от реализации).
  • Безопасный: нет.
PATCH /api/users/42
Content-Type: application/json

{"name": "Анна Смирнова"}

Ответ: 200 OK + обновлённый объект, или 204 No Content.


DELETE — удалить ресурс

  • Назначение: удалить ресурс.
  • Тело запроса: обычно отсутствует.
  • Идемпотентный: да (удалить уже удалённый ресурс = тот же результат).
  • Безопасный: нет.
DELETE /api/users/42
Authorization: Bearer eyJhbGci...

Ответ: 204 No Content или 200 OK.


Сводная таблица методов

МетодТело запросаИдемпотентныйБезопасныйТипичный use case
GETНетДаДаПолучить данные
POSTДаНетНетСоздать ресурс
PUTДаДаНетПолное обновление
PATCHДаНе обязательноНетЧастичное обновление
DELETEНет (обычно)ДаНетУдалить ресурс

Частые ошибки тестировщиков

  • GET для операций, меняющих данные. Например, /api/deleteUser?id=42 — это нарушение REST и потенциальная уязвимость (CSRF, кеширование).
  • PUT вместо PATCH. Если нужно обновить только email — используй PATCH, иначе остальные поля могут затереться.
  • Не тестировать 405 Method Not Allowed. Обязательно проверяй, что GET-endpoint не принимает DELETE-запросы.

Советы тестировщика

  1. Проверяй endpoint с правильным методом — базовый happy path.
  2. Проверяй с неправильным методом — должен вернуть 405 Method Not Allowed.
  3. Для POST: отправь дважды — должен создать два объекта (если нет уникальных ограничений).
  4. Для PUT: отправь только часть полей — проверь, что остальные не затёрлись (или затёрлись — в зависимости от требований).
  5. Для DELETE: после удаления сделай GET — должен вернуть 404 Not Found.

Что мы запомним

  • GET — безопасный и идемпотентный, не меняет данные, тела нет.
  • POST — создаёт ресурс, не идемпотентный, тело обязательно.
  • PUT — полная замена ресурса, идемпотентный.
  • PATCH — частичное обновление, только изменённые поля.
  • DELETE — удаляет ресурс, идемпотентный.
  • Всегда тестируй неправильные методы — ответ должен быть 405.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике