Что такое статус код в HTTP ответе и какие бывают категории кодов
Что проверяют
Читаете ли вы ответ сервера как данные для локализации дефекта. Для тестировщика класс кода это первый признак, чья ошибка: клиента, сервера или промежуточного звена. От этого зависит, на кого заводить баг и куда идти за логами.
Как отвечать
Статус это трёхзначное число в первой строке ответа, класс задаёт первая цифра.
1xx информационные: обработка продолжается, например 100 Continue. 2xx успех: 200 OK, 201 Created с адресом нового ресурса в заголовке Location, 204 No Content без тела. 3xx перенаправление и кеш: 301 и 308 постоянные, 302 и 307 временные, 304 Not Modified разрешает взять ответ из кеша. 4xx вина клиента: 400 запрос не разобран, 401 нет аутентификации, 403 пользователь опознан, но доступ запрещён, 404 ресурса нет, 409 конфликт состояния, 422 форма верна, а правила не прошли, 429 слишком часто. 5xx вина сервера: 500 внутренний сбой, 502 и 504 проблемы звена за прокси, 503 временная недоступность, обычно с заголовком Retry-After.
Сильный ответ добавляет, что код проверяется вместе с телом, заголовками и повторяемостью: для тестировщика ценность кода в том, что он сужает область поиска до одного участника обмена.
Где спотыкаются
Пропускают ответ с успешным кодом и текстом ошибки в теле. Так делают поспешные обёртки над старыми сервисами, и автотест, который сверяет только код, такой дефект не увидит никогда.
Не смотрят, меняется ли метод при перенаправлении. Часть кодов этого класса исторически превращает отправку данных в обычное чтение, а часть сохраняет метод и тело. Перепутанный код молча ломает клиентов, которые честно идут по новому адресу.
Валят на разработчиков всё, что начинается с пятёрки. Ответ мог родиться на балансировщике или в шлюзе, не дойдя до приложения, и тогда в логах сервиса не будет ни строчки. Сначала выясняют, кто именно ответил, и только потом заводят дефект.