🎱 HTTP-коды и методы: шпаргалка для тестировщика - Часть 1
Каждый пользователь хоть раз в жизни сталкивался с ситуацией, когда заходит на сайт, а его встречает ошибка 404, сразу мысль «Ну, значит что-то не то с сайтом». Давайте поглубже разберемся в теме и посмотрим на другие ошибки, которые могут быть неочевидны для пользователей, но для нас являются важными для контроля состояния и работы сайта.
Основные HTTP-методы
1. GET - «Дай мне данные» (например, загрузка страницы)
Не требуется тело запроса!
- Пример: GET /api/users → 200 OK (получаем список пользователей)
- Ошибка: GET /api/page-not-exist → 404 Not Found (пытаемся получить что-то со страницы, которой не существует)
2. POST - «Создай что-то новое/Отправь данные» (отправка формы, регистрация)
Тело запроса используется!
- Пример: POST /api/users body:{"name": "Alex", "id": 1} → 201 Created (создание нового пользователя)
- Ошибка: POST /api/users (без тела запроса) → 400 Bad Request
3. PUT - «Полностью обнови данные» (замена всей записи)
Тело запроса используется!
- Пример: PUT /api/users/1 {name: "Alex Black"} → 200 OK
- Ошибка: PUT /api/users/999 (несуществующий ID) {name: "Alex Black"} → 404 Not Found
4. PATCH - «Частично обнови данные» (измени только имя)
Тело запроса используется!
- Пример: PATCH /api/users/1 {name: "Alex Patched"} → 200 OK
- Ошибка: PATCH /api/users/1 [name: Alex Patched] (неправильный формат данных, мы ожидали JSON в body) → 400 Bad Request
5. DELETE - «Удали ресурс»
Не требуется тело запроса!
- Пример: DELETE /api/users/1 → 204 No Content (если удаление выполнено успешно, но нет необходимости возвращать тело ответа)
- Ошибка: DELETE /api/users/999 → 404 Not Found
6. HEAD - «Покажи только заголовки» (как GET, но без тела)
Не требуется тело запроса!
- Пример: HEAD /api/users → 200 OK (но тело пустое)
- Ошибка: HEAD /api/page-not-exist → 404 Not Found (пытаемся получить заголовок страницы, которой не существует)
7. OPTIONS - «Какие методы доступны?» (запрашивает информацию о доступных методах и опциях для конкретного ресурса)
Не требуется тело запроса!
- Пример: OPTIONS /api/users → 200 OK (в заголовке Allow: GET, POST, PUT)
8. TRACE - «Покажи путь запроса» (используется для диагностики, возвращает полученный запрос)
Не требуется тело запроса!
- Пример: TRACE /api/users → 200 OK (в теле ответа - копия вашего запроса)
- Ошибка: TRACE /api/security-page → 403 Forbidden (метод запрещен из-за соображений безопасности)
P.S. Самый редкий зверь в API-тестировании - это TRACE. Встречали его когда-нибудь в работе?