Какие есть стандарты и где искать информацию о статус кодах HTTP
Что проверяют
Знаете ли вы, что у HTTP есть спецификация, и умеете ли смотреть в первоисточник, а не в первый сайт из выдачи. Для тестировщика это вопрос про доказательность: сможете ли вы обосновать, что ответ 200 с текстом ошибки внутри это дефект. Следом обычно просят назвать классы кодов и разобрать пару конкретных.
Как отвечать
Начните с актуальных документов, это сразу отделяет вас от заучивших список:
- RFC 9110 «HTTP Semantics»: главный документ, в нём методы, заголовки и все базовые статус-коды. Он вышел в июне 2022 и заменил серию RFC с 7230 по 7235, так что ссылаться на RFC 7231 сегодня не стоит;
- RFC 9111, 9112, 9113, 9114: кэширование, HTTP/1.1, HTTP/2 и HTTP/3 соответственно;
- реестр IANA HTTP Status Code Registry: единственный полный список, включая коды из отдельных документов: 429 Too Many Requests, 451 Unavailable For Legal Reasons, 103 Early Hints;
- MDN Web Docs: человеческий пересказ с примерами, удобно для быстрой проверки, но в баг-репорт кладите ссылку на RFC;
- контракт вашего API: OpenAPI-описание или договорённость с бэкендом. Она главнее общей теории: если команда решила отдавать 422 на невалидное тело, дефект это отклонение от контракта.
Дальше классы: 1xx промежуточные, 2xx успех, 3xx перенаправление, 4xx ошибка клиента, 5xx ошибка сервера. Покажите, что различаете близкие пары: 401 против 403, 400 против 422, 404 против 410, 301 против 302 и 307/308, где метод обязан сохраниться, 502 против 503 и 504.
Закончите практикой: код проверяется вместе с телом, заголовками и последствиями. Ответ 200 с полем error внутри, 500 вместо 400 на кривой ввод, отсутствие Location при 201 это типовые находки.
Где спотыкаются
Ссылаются на RFC 2616 или 7231, которые давно заменены. Отдельная классика это назвать RFC 7519: он про JWT и к статус-кодам отношения не имеет.
Считают, что 4xx всегда вина клиента. Ответ 429 при слишком низком лимите или 400 из-за ошибки в валидации сервера это дефект продукта.
Заучивают номера, но не проверяют смысл. Сервис, который на любую проблему отдаёт 500, формально «работает по спецификации», а на деле лишает клиента возможности отличить свою ошибку от чужой.