Статус-код приходит от сервера в ответ на запрос и представляет собой трехзначное число в диапазоне от 100 до 599. Это число несет информационный характер о результате обработки запроса сервером.
В протоколе HTTP статус-коды подразделяются на пять категорий:
-
Не определены(
0
-100
)0 Nothing
- используется для обозначения отсутствия кода или ошибки при его получении;
-
Информационные ответы (
100
–199
)100 Continue
- промежуточный ответ, он указывает, что клиент должен продолжить запрос или игнорировать этот ответ, если запрос уже завершен;101 Switching Protocols
- этот код отправляется в ответ на заголовок запроса Upgrade от клиента и указывает протокол, на который переключается сервер;102 Processing
- сервер получил и обрабатывает запрос, но ответа пока нет;103 Early Hints
- Этот код в первую очередь предназначен для использования с заголовком Link, позволяя пользовательскому агенту начать предварительную загрузку ресурсов или осуществить предварительное соединение к источнику ресурсов, пока сервер готовит ответ;
-
Успешные ответы (
200
–299
)200 ОК
- указывает на успешную обработку запроса, когда сервер вернул ожидаемую информацию;201 Создан
- сервер подтвердил создание ресурса;202 Accepted
- удаление будет успешным, но еще не завершено;204 No Content
- удаление было выполнено, но тело ответа отсутствует;
-
Ответы о перенаправлении(редиректы) (
300
–399
)300 Множественный выбор
- запрос клиента имеет несколько возможных ответов;301 Перемещено навсегда
- искомый ресурс был навсегда перемещен по другому URL. Пользователи и боты будут перенаправлены на этот новый URL;
-
Ошибки клиента (
400
–499
)400 Плохой запрос
- клиент отправил запрос с ошибочными, неполными или недопустимыми данными;401 Unauthorized
- требуется авторизация для доступа к ресурсу;403 Forbidden
- клиент не имеет прав доступа к ресурсу;404 Not Found
- сервер доступен, но запрос направлена на несуществующий или ненайденный ресурс;405 Метод не поддерживается(неправильный)
- метод запроса понятен, но не допустим для конкретного ресурса/используется неправильно (не к тем данным или неправильным способом). При методах GET и HEAD этот код ошибки никогда не должен возвращаться;409 Конфликт
- запрос конфликтует с внутренними операциями сервера (н/р, такой пользователь уже существует в базе данных);418 I'm a teapot
- шутка 1го апреля: сервер отклоняет попытку заварить кофе в чайнике;429 DDOS
- отправлено слишком много запросов в заданный период времени;
-
Ошибки сервера (
500
–599)
500 Внутренняя ошибка сервера
- сервер столкнулся с проблемой, которую не смог обработать;501 Не реализовано
- cервер не понимает метод запроса, или не имеет функциональности для его обработки;502 Bad Gateway
- сервер действует как прокси или шлюз и получает недействительный ответ от вышестоящего сервера;503 Служба недоступна
- сервер временно недоступен или перегружен;504 Gateway Timeout
- сервер, действуя как шлюз или прокси, не дождался ответа от вышестоящего сервера и не может завершить обработку запроса;505 Версия HTTP не поддерживается
- сервер не поддерживает версию HTTP, указанную в запросе;
Хотя разработчики и определяют статус-коды для своих приложений, хорошей практикой считается следование стандартам разработки API. Например:
Если при регистрации пользователя сервер возвращает ответ 200 OK
вместо 201 Created
, это не обязательно ошибка. Но, как правило, следование стандартам считается наилучшей практикой. При тестировании API тестировщикам стоит опираться на документацию и здравый смысл. Если документация указывает на ожидаемый ответ 200 OK
, значит, таково решение разработчика. Но в таких ситуациях стоит уточнять документацию.
ℹ️ Коды состояния определены в RFC 9110
На собеседовании могут спросить, чем 502
-й статус-код отличается от 504
-го? В случае 502
-го статус-кода при запросе к серверу наш сервер обратился к вышестоящему серверу для получения информации и получил от него некорректный ответ. А в случае с 504
-м наш сервер не дождался ответа от вышестоящего сервера в принципе.
2.3.1.4 HTTP Methods Theme | Back To iOSWiki Contents | 2.3.2 Web Theme Folder