← Назад к вопросам

Какие HTTP-методы вы знаете? Для чего они используются?

1.0 Junior🔥 251 комментариев
#Тестирование API

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

HTTP-методы (HTTP Verbs)

HTTP-методы — это команды, которые указывают веб-серверу, какое действие нужно выполнить с ресурсом. Понимание HTTP-методов критично для тестирования REST API и веб-приложений.

Основные (стандартные) HTTP-методы

1. GET

Назначение: Получение данных с сервера

Характеристики:

  • Безопасный — не изменяет состояние сервера
  • Идемпотентный — повторный запрос = тот же результат
  • Кэшируется — браузер может кэшировать ответ
  • Без тела — параметры передаются в URL

Примеры:

GET /api/v1/users          — получить список всех пользователей
GET /api/v1/users/123      — получить пользователя с ID 123
GET /api/v1/users?role=admin  — получить только администраторов

Статус коды:

  • 200 OK — успешно
  • 404 Not Found — ресурс не найден
  • 401 Unauthorized — требуется авторизация

2. POST

Назначение: Создание нового ресурса

Характеристики:

  • Небезопасный — изменяет состояние сервера
  • НЕ идемпотентный — повторный запрос создаст новый ресурс
  • Данные в теле — параметры в JSON/Form data
  • НЕ кэшируется

Примеры:

POST /api/v1/users
Body: {"name": "John", "email": "john@example.com"}
Ответ: 201 Created {"id": 123, "name": "John", ...}

POST /api/v1/login
Body: {"email": "user@example.com", "password": "pass123"}
Ответ: 200 OK {"token": "jwt_token..."}

Статус коды:

  • 201 Created — ресурс успешно создан
  • 400 Bad Request — некорректные данные
  • 409 Conflict — ресурс уже существует

3. PUT

Назначение: Полное обновление существующего ресурса

Характеристики:

  • Небезопасный — изменяет состояние
  • Идемпотентный — повторный запрос не создаст дубликат
  • Заменяет весь ресурс — все поля должны быть переданы
  • Данные в теле

Примеры:

PUT /api/v1/users/123
Body: {"name": "John Updated", "email": "new@example.com"}
Ответ: 200 OK {"id": 123, "name": "John Updated", ...}

Статус коды:

  • 200 OK — успешно обновлено
  • 201 Created — ресурс создан (если не существовал)
  • 404 Not Found — ресурс не найден

4. PATCH

Назначение: Частичное обновление ресурса

Характеристики:

  • Небезопасный — изменяет состояние
  • Идемпотентный — если правильно реализован
  • Обновляет только переданные поля — не нужно отправлять весь объект
  • Более эффективен, чем PUT

Примеры:

PATCH /api/v1/users/123
Body: {"name": "Jane"}
Ответ: 200 OK {"id": 123, "name": "Jane", "email": "old@example.com"}

Разница между PUT и PATCH:

ПУТ /users/123
Body: {"name": "John", "email": "john@example.com"}
→ Заменяет весь объект. Другие поля удаляются.

PATCH /users/123
Body: {"name": "John"}
→ Обновляет только name, email остаётся прежним.

5. DELETE

Назначение: Удаление ресурса

Характеристики:

  • Небезопасный — удаляет данные
  • Идемпотентный — повторное удаление = тот же результат (404)
  • Без тела — параметры в URL

Примеры:

DELETE /api/v1/users/123
Ответ: 204 No Content

DELETE /api/v1/posts/456/comments/789
Ответ: 204 No Content

Статус коды:

  • 204 No Content — успешно удалено
  • 200 OK — удалено (с сообщением в теле)
  • 404 Not Found — ресурс не найден

Редко используемые методы

HEAD

Назначение: Как GET, но без тела ответа

Применение:

  • Проверка доступности ресурса
  • Получение заголовков без загрузки данных
  • Проверка размера файла
HEAD /api/v1/large-file.zip
Ответ: 200 OK (только заголовки, без файла)
Headers: Content-Length: 1024000

OPTIONS

Назначение: Получить допустимые методы для ресурса

Применение:

  • CORS pre-flight запросы
  • Обнаружение поддерживаемых операций
OPTIONS /api/v1/users
Ответ: 200 OK
Headers: Allow: GET, POST, PUT, DELETE

TRACE

Назначение: Отправить запрос обратно в теле ответа (для отладки)

Применение: Редко используется, часто отключен в production

Таблица сравнения методов

МетодЦельБезопасныйИдемпотентныйКэшТело
GETЧтение
POSTСоздание
PUTПолное обновление
PATCHЧастичное обновление
DELETEУдаление
HEADМетаданные

REST соглашения

Правильное использование методов в REST API:

ГЕТ /api/v1/users           200  Список всех пользователей
ГЕТ /api/v1/users/123       200  Конкретный пользователь
ПОСТ /api/v1/users          201  Создать пользователя
ПУТ /api/v1/users/123       200  Заменить пользователя
ПАТЧ /api/v1/users/123      200  Обновить поля пользователя
ДЕЛЕТЕ /api/v1/users/123    204  Удалить пользователя

HTTP статус коды

2xx — Успех:

  • 200 OK
  • 201 Created
  • 204 No Content

3xx — Редирект:

  • 301 Moved Permanently
  • 302 Found
  • 304 Not Modified

4xx — Ошибка клиента:

  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 409 Conflict
  • 422 Unprocessable Entity

5xx — Ошибка сервера:

  • 500 Internal Server Error
  • 503 Service Unavailable

Тестирование HTTP методов

Инструменты:

  • Postman — интерактивное тестирование
  • curl — командная строка
  • REST Assured — автоматизированное тестирование

Пример с curl:

# GET
curl https://api.example.com/users

# POST
curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "John"}'

# DELETE
curl -X DELETE https://api.example.com/users/123

Практические рекомендации для QA

  1. Проверяйте статус коды — убедитесь, что метод возвращает правильный код
  2. Тестируйте идемпотентность — повторный вызов должен быть безопасен
  3. Проверяйте данные в ответе — ответ должен содержать ожидаемые поля
  4. Проверяйте ошибки — убедитесь в правильной обработке ошибок
  5. Используйте правильные методы — GET для чтения, POST для создания и т.д.

Понимание HTTP-методов — это основа API тестирования и критично для любого QA-специалиста.

Какие HTTP-методы вы знаете? Для чего они используются? | PrepBro