Про HTTP-коды
Этот текст задумался мною после того, как я увидела исчерпывающую шпаргалку по статус-кодам в канале Ирины Шляпиной из «Еще один канал про QA». С тех пор, эта шпаргалка всегда под рукой
В этом посте собрала самые распространенные статус-коды и их отличия друг от друга. Подробнее про все коды состояния можно почитать здесь
Код состояния (Status Code) сообщает, как именно сервер обработал запрос. Например, код 200 означает, что все прошло успешно. А код 500 указывает на внутреннюю ошибку сервера.
Ответы сгруппированы в 5 классов:
🔘Информационные (1xx)
🔘Сообщения об успехе (2xx)
🔘Сообщения о перенаправлении (3xx)
🔘Ошибки клиента (4xx)
🔘Ошибки сервера (5xx)
Статус-коды особенно выручают, если что-то идет не так: например, по 400-ым ошибкам тестировщик понимает, что проблема в запросе, а по 500-ым — проблема в работе сервера. Эти коды помогают QA быстро понять суть проблемы и приступить к её решению
1⃣ Информационные ответы 1хх
Коды этого диапазона означают, что запрос получен и сервер продолжает его обработку
100 Continue: продолжайте
102 Processing: идёт обработка
📌 В чем разница: в первом случае — сервер получил начальную часть запроса и готов принять тело запроса, во втором — запрос принят, но обработка ещё не завершена
2⃣ Успешные ответы
Эти коды означают, что запрос клиента был принят, обработан и завершён
200 ОК: успешно
201 Created: создано
📌 В чем разница: в первом случае — успешное выполнение того, что хотел клиент, во втором — создание нового ресурса
3⃣ Сообщения о перенаправлении
Коды этого диапазона — сигнал от сервера: запрашиваемый ресурс больше не доступен по прежнему адресу или временно перемещен
301 Moved Permanently: перемещено навсегда
302 Found: найдено
📌 В чем разница: в первом случае — URL-адрес запрошенного ресурса был изменен навсегда, во втором — URI запрошенного ресурса был временно изменен
4⃣ Ошибки клиента
Указывают, что ошибка произошла по вине клиента. Например, из-за некорректного запроса, отсутствия авторизации или нарушения логики API
400 Bad Request: некорректный запрос — это общий код, сигнализирующий о том, что запрос сформирован неправильно
📌 Пример: переданы невалидные данные / в запросе отсутствуют обязательные поля
401 Unauthorized: не авторизован — доступ к ресурсу запрещен, потому что пользователь предоставил неправильные учетные данные
📌 Пример: переданы невалидные данные аутентификации / в запросе отсутствует Authorization header / время жизни токена истекло
403 Forbidden: запрещено — доступ к ресурсу запрещен, даже если клиент аутентифицирован. В отличие от 401, здесь дело не в данных пользователя, а в недостаточных правах доступа
📌 Пример: пользователь без роли manager пытается удалить другого пользователя
404 Not Found: не найдено — сервер не может найти запрашиваемый ресурс
📌 Пример: запрос к несуществующему пользователю / удаленному объекту
422 Unprocessable Entity: необрабатываемый экземпляр — данные валидны по формату, но не проходят бизнес-валидацию
📌 Пример: запрос предполагает действие, которое ограничено для лиц младше 18 лет / дата окончания раньше даты начала
5⃣ Ошибки сервера
Означают, что запрос клиента корректен, но сервер не смог его обработать из-за внутренней ошибки или временной недоступности
500 Internal Server Error: внутренняя ошибка сервера — общий код, который означает, что сервер знает, что произошла ошибка, но не может конкретизировать, что именно пошло не так
📌 Пример: неправильная настройка сервера / проблемы с базой данных / нестабильное соединение
502 Bad Gateway: плохой шлюз — означает, что сервер, действующий как шлюз или прокси, получил некорректный ответ от другого сервера
📌 Пример: внешний сервис оплаты не доступен — основной сервис возвращает 502, не сумев «достучаться до соседа»
503 Service Unavailable: сервис недоступен
📌 Пример: деплой / перезрузка сервиса
На практике же бывает всякое. Иногда вообще любой кейс возвращает 200, а внутри ответа написано про ошибку. Все это, конечно, требует внимания QA
ставь 👍 и сохраняй, чтобы не потерять
#куашная
Post #79
572

- 👍 15
- 🔥 8
- ❤ 5