Skip to content

Latest commit

 

History

History
60 lines (42 loc) · 8.14 KB

2.3.1.5 ResponseStatusCode.md

File metadata and controls

60 lines (42 loc) · 8.14 KB

Cтатус-коды

  1. Коды состояния ответа HTTP

Статус-код приходит от сервера в ответ на запрос и представляет собой трехзначное число в диапазоне от 100 до 599. Это число несет информационный характер о результате обработки запроса сервером.

В протоколе HTTP статус-коды подразделяются на пять категорий:

  • Не определены(0-100)

    • 0 Nothing - используется для обозначения отсутствия кода или ошибки при его получении;
  • Информационные ответы (100199)

    • 100 Continue - промежуточный ответ, он указывает, что клиент должен продолжить запрос или игнорировать этот ответ, если запрос уже завершен;
    • 101 Switching Protocols - этот код отправляется в ответ на заголовок запроса Upgrade от клиента и указывает протокол, на который переключается сервер;
    • 102 Processing - сервер получил и обрабатывает запрос, но ответа пока нет;
    • 103 Early Hints - Этот код в первую очередь предназначен для использования с заголовком Link, позволяя пользовательскому агенту начать предварительную загрузку ресурсов или осуществить предварительное соединение к источнику ресурсов, пока сервер готовит ответ;
  • Успешные ответы (200299)

    • 200 ОК - указывает на успешную обработку запроса, когда сервер вернул ожидаемую информацию;
    • 201 Создан - сервер подтвердил создание ресурса;
    • 202 Accepted - удаление будет успешным, но еще не завершено;
    • 204 No Content - удаление было выполнено, но тело ответа отсутствует;
  • Ответы о перенаправлении(редиректы) (300399)

    • 300 Множественный выбор - запрос клиента имеет несколько возможных ответов;
    • 301 Перемещено навсегда - искомый ресурс был навсегда перемещен по другому URL. Пользователи и боты будут перенаправлены на этот новый URL;
  • Ошибки клиента (400499)

    • 400 Плохой запрос - клиент отправил запрос с ошибочными, неполными или недопустимыми данными;
    • 401 Unauthorized - требуется авторизация для доступа к ресурсу;
    • 403 Forbidden - клиент не имеет прав доступа к ресурсу;
    • 404 Not Found - сервер доступен, но запрос направлена на несуществующий или ненайденный ресурс;
    • 405 Метод не поддерживается(неправильный) - метод запроса понятен, но не допустим для конкретного ресурса/используется неправильно (не к тем данным или неправильным способом). При методах GET и HEAD этот код ошибки никогда не должен возвращаться;
    • 409 Конфликт - запрос конфликтует с внутренними операциями сервера (н/р, такой пользователь уже существует в базе данных);
    • 418 I'm a teapot - шутка 1го апреля: сервер отклоняет попытку заварить кофе в чайнике;
    • 429 DDOS - отправлено слишком много запросов в заданный период времени;
  • Ошибки сервера (500599)

    • 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