Какие HTTP-методы вы знаете? Для чего они используются?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
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
- Проверяйте статус коды — убедитесь, что метод возвращает правильный код
- Тестируйте идемпотентность — повторный вызов должен быть безопасен
- Проверяйте данные в ответе — ответ должен содержать ожидаемые поля
- Проверяйте ошибки — убедитесь в правильной обработке ошибок
- Используйте правильные методы — GET для чтения, POST для создания и т.д.
Понимание HTTP-методов — это основа API тестирования и критично для любого QA-специалиста.