Разное

Http ok: 200 — это хорошо или это плохо? / Хабр

Содержание

200 — это хорошо или это плохо? / Хабр

В этой трехминутной статье я хочу затронуть наболевшую тему.

Речь пойдет о статус коде HTTP 200 и ошибках в ответе.

HTTP/1.1 200 OK
{
  "error": {
    code: 2019,
    message: "Validation failed: field 'size' is invalid: the value is not a number"
  }
}

Нормально ли возвращать такой код, если возникла ошибка?

Нет? Да? Ну-ка давайте разберемся.

Случай 1. HTTP 200 и batch операция

Допустим отправляется один запрос. Запрос выполняется успешно. Возвращаем код 200. Ответ не содержит информации об ошибке. С этим случаем всё предельно просто и понятно. А что делать если требуется выполнить batch операцию?

Например, мы работаем с сервером изображений. Предоставляемый API позволяет загрузить за один запрос сразу несколько файлов.

Запрос выглядит примерно так:

{
  "sources": [
    {"image": "http://myserver. com/image1.jpg"},
    {"image": "http://myserver.com/image2.jpg"},
    {"video": "http://myserver.com/video.jpg"}
  ]
}

Предположим, по какой-то причине (например, кончилось место на сервере) видео загрузить не удалось. Что бы вы вернули в таком случае? 2xx или 4xx или 5xx? Сервер, отвечает примерно вот так:

HTTP/1.1 200 OK
{
  "results": [
    { "status": "ok", "id": 312 },
    { "status": "ok", "id": 313 },
    { "status": "fail", "error": "NO SPACE" }
  ]
}

Некоторые сервисы (и вполне известные) действуют также. Отвечают 200. А в ответе возвращают список команд, которые выполнить не получилось.

Случай 2. HTTP 200 и ошибки в ответе

Пришёл запрос. Запрос зафейлился. Например, мы забыли указать какое-то поле. Или дату отправили не в миллисекундах, а как строку. Тут-то точно не надо возвращать 200! Но увы и нет.

Где-то на просторах интернета я встречал проекты на github и bitbucket, которые специально предназначены для таких вот случаев.

В них просто вшиты возможные варианты и шаблоны. Можно их достаточно легко встроить в свой проект и как бы быть готовым к разного рода «падениям» запросов. Но есть одно но.

В такие моменты твой код становится уродливым. Ты ему говоришь:

— Cлушай, у нас тут есть один внешний API. Он в целом нормальный. Только надо внимательно смотреть что в ответе приходит. Если там ответ содержит поле «error», то значит запрос сломался.
— Но ведь для этого же есть 4xx и 5xx! Да кто вообще так делает?!
— Тише-тише. Не надо так громко. Он может услышать. Пожалуйста, будь добрее к нему. И просто смотри не только на статус код, но и на ответ, пожалуйста.
— Ладно…

HTTP 200 — это просто статус

Ну 200 и 200. Ну не запилили. Или не успели. Или вообще не будут. Ну и что?! Написал json парсер и всё!

Как бы да, но я хочу знать почему. Забыли? Забили? Не успели? Не знали?

Возможно я что-то упускаю. Или не знаю. Хочу ваше мнение. Срочно. Всем добра и выходных на выходных.

Комитет общественных коммуникаций Ленинградской области

Комитет общественных коммуникаций Ленинградской области

Приёмная

  • Губернатор Ленинградской области Александр Дрозденко поддержал предложение комитета общественных коммуникаций и поручил выделить здание в правительственном квартале Гатчины под помещения для некоммерческих организаций.

  • Областные некоммерческие организации подали 168 заявок на первый конкурс на грант губернатора Ленинградской области 2023 года.

  • Год «Команды знаний» в Ленинградской области стартовал со встречи Александра Дрозденко с победителями федеральных конкурсов среди некоммерческих организаций.

  • Для представителей НКО прошел семинар, на котором специалисты комитета общественных коммуникаций рассказали о правилах первого конкурсного отбора на грант в 2023 году.

  • Почти полтонны подарков для добровольцев и мобилизованных собрали на итоговой встрече с губернатором активисты Команды 47.

Все новости

Праздник неравнодушных

2145 некоммерческих организаций действующих в Ленобласти отмечают сегодня Всемирный день НКО.

27 февраля 2023

«Святыми тропами» по Ленобласти

В Волхове презентовали сайт с интерактивной картой паломнических маршрутов для молодежи.

26 февраля 2023

Памяти коллеги

17 февраля не стало нашего товарища, коллеги — главного редактора радио «Лодья», руководителя пресс-службы Администрации Лодейнопольского района Елены Ивановны Васильевой.

18 февраля 2023

Возможности для молодежи в НКО

Перспективы участия молодежи в работе социально ориентированных НКО представил комитет общественных коммуникаций на карьерном форуме «Путь к успеху» в Гатчине.

17 февраля 2023

Гранты губернатора: заявки поданы, эксперты утверждены

Первое в 2023 году заседание экспертного совета конкурса на гранты губернатора Ленинградской области утвердило кандидатуры 33 специалистов, которые оценят заявки, поданные социально ориентированными организациями на конкурс губернаторских грантов по 11 социально значимым направлениям.

16 февраля 2023

Новые социальные проекты вышли на грант губернатора 2023 года

Завершен этап технической проверки заявок, претендующих на грант губернатора Ленинградской области в 2023 году.

14 февраля 2023

Фактический адрес

Санкт-Петербург, Суворовский пр., д. 67

Электронная почта

[email protected]

Телефон приемной

+7 (812) 539-41-89

кодов состояния ответа HTTP — HTTP

Коды состояния ответа HTTP указывают, был ли успешно выполнен конкретный HTTP-запрос. Ответы сгруппированы в пять классов:

  1. Информационные ответы ( 100 199 )
  2. Успешные ответы ( 200 299 )
  3. Сообщения перенаправления ( 300 399 )
  4. Ответы об ошибках клиента ( 400 499 )
  5. Ответы об ошибках сервера ( 500 599 )

Перечисленные ниже коды состояния определены в RFC 9110.

Примечание: Если вы получили ответ, которого нет в этом списке, это нестандартный ответ, возможно, настроенный для программного обеспечения сервера.

100 Продолжить

Этот промежуточный ответ указывает, что клиент должен продолжить запрос или проигнорировать ответ, если запрос уже завершен.

101 Протоколы переключения

Этот код отправляется в ответ на заголовок запроса Upgrade от клиента и указывает протокол, на который переключается сервер.

102 Обработка (WebDAV)

Этот код указывает, что сервер получил и обрабатывает запрос, но ответа пока нет.

103 Ранние подсказки Экспериментальный

Этот код состояния в первую очередь предназначен для использования с заголовком Link , позволяя пользовательскому агенту начать предварительную загрузку ресурсов, пока сервер готовит ответ.

200 ОК

Запрос выполнен успешно. Значение результата «успех» зависит от метода HTTP:

  • GET : Ресурс был получен и передан в теле сообщения.
  • HEAD : заголовки представления включаются в ответ без какого-либо тела сообщения.
  • PUT или POST : Ресурс, описывающий результат действия, передается в теле сообщения.
  • TRACE : тело сообщения содержит сообщение запроса, полученное сервером.
201 Создан

Запрос выполнен успешно, в результате был создан новый ресурс. Обычно это ответ, отправленный после запросов POST или несколько запросов PUT .

202 Принято

Запрос получен, но еще не исполнен. Это ни к чему не обязывает, поскольку в HTTP нет способа отправить асинхронный ответ позже, указывающий результат запроса. Он предназначен для случаев, когда другой процесс или сервер обрабатывает запрос, или для пакетной обработки.

203 Неавторитетная информация

Этот код ответа означает, что возвращенные метаданные не совсем совпадают с теми, что доступны на исходном сервере, а получены из локальной или сторонней копии. В основном это используется для зеркал или резервных копий другого ресурса. За исключением этого конкретного случая, ответ 200 OK предпочтительнее, чем этот статус.

204 Нет содержимого

Для этого запроса нет контента для отправки, но заголовки могут быть полезны. Пользовательский агент может обновить свои кэшированные заголовки для этого ресурса новыми.

205 Сброс содержимого

Указывает пользовательскому агенту сбросить документ, отправивший этот запрос.

206 Частичное содержимое

Этот код ответа используется, когда от клиента отправляется заголовок Range для запроса только части ресурса.

207 Мультистатус (WebDAV)

Передает информацию о нескольких ресурсах для ситуаций, когда могут быть уместны несколько кодов состояния.

208 Уже сообщалось (WebDAV)

Используется внутри элемента ответа , чтобы избежать повторного перечисления внутренних членов нескольких привязок к одной и той же коллекции.

226 IM Используется (Дельта-кодирование HTTP)

Сервер выполнил запрос GET для ресурса, и ответ является представлением результата одной или нескольких манипуляций с экземпляром, примененных к текущему экземпляру.

300 Множественный выбор

Запрос имеет более одного возможного ответа. Пользовательский агент или пользователь должны выбрать один из них. (Не существует стандартизированного способа выбора одного из ответов, но рекомендуются HTML-ссылки на возможные варианты, чтобы пользователь мог выбрать. )

301 Перемещено навсегда

URL запрошенного ресурса был изменен навсегда. Новый URL-адрес дается в ответе.

302 Найдено

Этот код ответа означает, что URI запрошенного ресурса был временно изменен . Дальнейшие изменения в URI могут быть внесены в будущем. Следовательно, этот же URI должен использоваться клиентом в будущих запросах.

303 См. Другое

Сервер отправил этот ответ, чтобы указать клиенту получить запрошенный ресурс по другому URI с помощью запроса GET.

304 Без изменений

Это используется для целей кэширования. Он сообщает клиенту, что ответ не был изменен, поэтому клиент может продолжать использовать ту же кэшированную версию ответа.

305 Использовать прокси-сервер Not for use in new websites.»> Устаревший

Определено в предыдущей версии спецификации HTTP, чтобы указать, что запрошенный ответ должен быть доступен через прокси. Он устарел из-за проблем безопасности, связанных с внутренней конфигурацией прокси-сервера.

306 не используется

Этот код ответа больше не используется; он просто зарезервирован. Он использовался в предыдущей версии спецификации HTTP/1.1.

307 Временное перенаправление

Сервер отправляет этот ответ, чтобы указать клиенту получить запрошенный ресурс по другому URI тем же методом, который использовался в предыдущем запросе. Имеет ту же семантику, что и 302 Found 9.0007 Код ответа HTTP, за исключением того, что пользовательский агент не должен изменять используемый метод HTTP: если в первом запросе использовался POST , во втором запросе должен использоваться POST .

308 Постоянное перенаправление

Это означает, что ресурс теперь постоянно находится в другом URI, указанном в заголовке HTTP-ответа Location: . Это имеет ту же семантику, что и 301 Moved Permanently Код ответа HTTP, за исключением того, что агент пользователя не должен изменять используемый метод HTTP: если в первом запросе использовался POST , во втором запросе должен использоваться POST .

400 Неверный запрос

Сервер не может или не будет обрабатывать запрос из-за чего-то, что воспринимается как ошибка клиента (например, искаженный синтаксис запроса, неверный кадр сообщения запроса или ложная маршрутизация запроса).

401 Неавторизованный

Хотя стандарт HTTP определяет «неавторизованный», семантически этот ответ означает «не прошедший проверку подлинности». То есть клиент должен аутентифицировать себя, чтобы получить запрошенный ответ.

402 Требуется оплата Экспериментальный

Этот код ответа зарезервирован для использования в будущем. Первоначальной целью создания этого кода было использование его для цифровых платежных систем, однако этот код состояния используется очень редко, и не существует стандартного соглашения.

403 Запрещено

у клиента нет прав доступа к контенту; то есть он неавторизован, поэтому сервер отказывается предоставить запрошенный ресурс. В отличие от 401 Unauthorized , личность клиента известна серверу.

404 Не найдено

Сервер не может найти запрошенный ресурс. В браузере это означает, что URL-адрес не распознается. В API это также может означать, что конечная точка действительна, но самого ресурса не существует. Серверы также могут отправлять этот ответ вместо 403 Запрещено для сокрытия существования ресурса от неавторизованного клиента. Этот код ответа, вероятно, наиболее известен из-за его частого появления в Интернете.

405 Метод не разрешен

Метод запроса известен серверу, но не поддерживается целевым ресурсом. Например, API может не разрешить вызов DELETE для удаления ресурса.

406 Неприемлемо

Этот ответ отправляется, когда веб-сервер после выполнения управляемого сервером согласования контента не находит контента, соответствующего критериям, заданным агентом пользователя.

407 Требуется аутентификация прокси-сервера

Это похоже на 401 Неавторизованный , но для аутентификации требуется прокси-сервер.

408 Время ожидания запроса

Этот ответ отправляется некоторыми серверами при бездействующем соединении, даже без какого-либо предварительного запроса со стороны клиента. Это означает, что сервер хотел бы отключить это неиспользуемое соединение. Этот ответ используется гораздо чаще, поскольку некоторые браузеры, такие как Chrome, Firefox 27+ или IE9, используют механизмы предварительного соединения HTTP для ускорения работы в Интернете. Также обратите внимание, что некоторые серверы просто отключают соединение, не отправляя это сообщение.

409 Конфликт

Этот ответ отправляется, когда запрос конфликтует с текущим состоянием сервера.

410 Исчез

Этот ответ отправляется, когда запрошенный контент был безвозвратно удален с сервера без адреса пересылки. Ожидается, что клиенты удалят свои кеши и ссылки на ресурс. Спецификация HTTP предполагает, что этот код состояния будет использоваться для «ограниченных по времени рекламных услуг». API не должны чувствовать себя обязанными указывать ресурсы, которые были удалены, с этим кодом состояния.

411 Требуемая длина

Сервер отклонил запрос, поскольку поле заголовка Content-Length не определено, а сервер требует его.

412 Предварительное условие не выполнено

Клиент указал в своих заголовках предварительные условия, которым сервер не соответствует.

413 Слишком большая полезная нагрузка

Объект запроса превышает ограничения, установленные сервером. Сервер может закрыть соединение или вернуть 9Поле заголовка 0006 Retry-After .

414 URI слишком длинный

URI, запрошенный клиентом, длиннее, чем сервер готов интерпретировать.

415 Неподдерживаемый тип носителя

Медиаформат запрошенных данных не поддерживается сервером, поэтому сервер отклоняет запрос.

416 Неудовлетворительный диапазон

Диапазон, указанный полем заголовка Range в запросе, не может быть выполнен. Возможно, диапазон выходит за пределы размера данных целевого URI.

417 Ожидание не выполнено

Этот код ответа означает, что ожидание, указанное в поле заголовка запроса Expect , не может быть выполнено сервером.

418 Я чайник

Сервер отказывается заваривать кофе в чайнике.

421 Неверно направленный запрос

Запрос был направлен на сервер, который не может дать ответ. Это может быть отправлено сервером, который не настроен для создания ответов для комбинации схемы и полномочий, включенных в URI запроса.

422 Необрабатываемый контент (WebDAV)

Запрос был сформирован правильно, но его невозможно выполнить из-за семантических ошибок.

423 Заблокировано (WebDAV)

Ресурс, к которому осуществляется доступ, заблокирован.

424 Ошибка зависимости (WebDAV)

Запрос не выполнен из-за сбоя предыдущего запроса.

425 Слишком рано Экспериментальный

Указывает, что сервер не хочет рисковать обработкой запроса, который может быть воспроизведен повторно.

426 Требуется обновление

Сервер отказывается выполнять запрос с использованием текущего протокола, но может сделать это после того, как клиент перейдет на другой протокол. Сервер отправляет заголовок Upgrade в ответе 426, чтобы указать требуемый(е) протокол(ы).

428 Требуется предварительное условие

Исходный сервер требует, чтобы запрос был условным. Этот ответ предназначен для предотвращения проблемы «потеря обновления», когда клиент GET s состояние ресурса, изменяет его и PUT s отправляет его обратно на сервер, когда тем временем третья сторона изменила состояние на сервере, что привело к конфликту.

429 Слишком много запросов

Пользователь отправил слишком много запросов за заданный промежуток времени («ограничение скорости»).

Сервер не хочет обрабатывать запрос, потому что его поля заголовка слишком велики. Запрос может быть отправлен повторно после уменьшения размера полей заголовка запроса.

451 Недоступно по юридическим причинам

Пользовательский агент запросил ресурс, который не может быть предоставлен на законных основаниях, например, веб-страницу, подвергнутую государственной цензуре.

500 Внутренняя ошибка сервера

Сервер столкнулся с ситуацией, с которой он не может справиться.

501 Не реализовано

Метод запроса не поддерживается сервером и не может быть обработан. Единственными методами, которые должны поддерживать серверы (и, следовательно, которые не должны возвращать этот код), являются ПОЛУЧИТЬ и ГОЛОВУ .

502 Плохой шлюз

Этот ответ об ошибке означает, что сервер, работающий в качестве шлюза для получения ответа, необходимого для обработки запроса, получил недопустимый ответ.

503 Служба недоступна

Сервер не готов обработать запрос. Распространенными причинами являются сервер, который отключен для обслуживания или перегружен. Обратите внимание, что вместе с этим ответом должна быть отправлена ​​удобная страница с объяснением проблемы. Этот ответ следует использовать для временных условий и Retry-After HTTP-заголовок должен, по возможности, содержать предполагаемое время до восстановления службы. Веб-мастер также должен позаботиться о заголовках, связанных с кэшированием, которые отправляются вместе с этим ответом, поскольку эти временные ответы обычно не следует кэшировать.

504 Время ожидания шлюза

Этот ответ об ошибке выдается, когда сервер действует как шлюз и не может вовремя получить ответ.

505 Версия HTTP не поддерживается

Версия HTTP, используемая в запросе, не поддерживается сервером.

506 Вариант также согласовывается

На сервере произошла внутренняя ошибка конфигурации: выбранный вариантный ресурс сам настроен на участие в прозрачном согласовании содержимого и, следовательно, не является надлежащей конечной точкой в ​​процессе согласования.

507 Недостаточно памяти (WebDAV)

Метод не может быть выполнен для ресурса, так как сервер не может сохранить представление, необходимое для успешного выполнения запроса.

508 Обнаружена петля (WebDAV)

Сервер обнаружил бесконечный цикл при обработке запроса.

510 Не расширен

Для выполнения сервером требуются дополнительные расширения запроса.

511 Требуется сетевая аутентификация

Указывает, что клиент должен пройти аутентификацию, чтобы получить доступ к сети.

Таблицы BCD загружаются только в браузере

с включенным JavaScript. Включите JavaScript для просмотра данных.
  • Список кодов состояния HTTP в Википедии
  • Официальный реестр IANA кодов состояния HTTP

Обнаружили проблему с содержанием этой страницы?

  • Отредактируйте страницу на GitHub.
  • Сообщить о проблеме с содержимым.
  • Посмотреть исходный код на GitHub.

Хотите принять участие?

Узнайте, как внести свой вклад.

Последний раз эта страница была изменена участниками MDN.

Что такое ответ 200 «ОК»?

Код состояния 200: Ответ «ОК»

Код состояния HTTP 200: Ответ «ОК»

Код состояния HTTP 200 означает успех. Клиент запросил документы с сервера. Сервер ответил клиенту и предоставил клиенту документы. Все хорошо.

Вы редко будете «видеть» этот ответ в дикой природе, используя браузер как обычный пользователь. Обычно вы видите этот ответ только тогда, когда используете инструмент цифрового маркетинга, который специально показывает вам код состояния.

В общем, вы хотите увидеть 200 запросов. Они хороши!

Протокол HTTP

Давайте поговорим о том, как работает протокол HTTP.

Интернет состоит из двух основных элементов: клиентов и серверов .

Каждый раз, когда вы щелкаете в своем браузере, вы получаете доступ к Интернету через веб-клиент . Это может быть Chrome, Firefox, Safari или Internet Explorer.

При посещении веб-сайта вы отправляете запрос на веб-сервер .

Facebook.com, ClickMinded.com, MarthaStewart.com/1525880/marthas-chocolate-chip-cookies — все эти сайты имеют собственный домашний адрес. Это называется IP-адрес .

Ваш домашний адрес может быть 123 Main Street, New York, NY 10001 , а адрес Facebook — 66.220.144.0 .

Всякий раз, когда вы посещаете страницу в Интернете, вы запрашиваете целую кучу документов с сервера этого веб-сайта. Это могут быть документы HTML, CSS, изображения, PDF — что бы это ни было, основные отношения остаются прежними: вы (клиент) делаете запрос, а веб-сайт (сервер) отвечает на этот запрос.

Язык , который вы используете для выполнения этих запросов, называется Протокол HTTP . Эти протоколы на самом деле просто стандарты, с которыми согласились все в сети. Точно так же, как английский, испанский и китайский языки имеют понятный протокол, HTTP — это просто набор стандартов и понятный протокол.

Существует множество различных веб-протоколов, и вы, возможно, знакомы с некоторыми из них:

  • DNS — Система доменных имен
  • FTP — Протокол передачи файлов
  • http — Протокол передачи гипертекста
  • IRC — Протокол чата интернет -реле
  • SMTP — Простой протокол переноса почты
  • SSLTSTP Secure Sockets LOALE
  • HTP SCOLTPENTTPER 9099

    HTP SCEPTTS WESTTP SECOL SOCKTE протокол HTTP, давайте поговорим о кодах состояния HTTP. Коды состояния сообщают нам, был ли HTTP-запрос успешным, неудачным или чем-то средним.

    Давайте посмотрим на пять основных кодов состояния:

    1. 1xx block: informational requests
    2. 2xx block: successful requests
    3. 3xx block: redirects
    4. 4xx block: client errors
    5. 5xx block: server errors

    Some status коды более распространены, чем другие. Например, когда вы занимаетесь цифровым маркетингом, вы часто сталкиваетесь с кодом состояния 200, кодом состояния 301 и кодом состояния 404, но вы можете никогда не увидеть код состояния 206 или 307.

    Давайте кратко рассмотрим каждый блок кода состояния и его значение.

    1xx Коды состояния

    Это информационные запросы . Сервер еще не полностью выполнил запрос и все еще обрабатывает информацию. Вы не будете часто видеть эти коды. К ним относятся:

    • 100 — Продолжить
    • 101 — Протокол переключения
    • 103 — Контрольные точки

    2xx Коды состояния

    Это успешных запросов , значит все в порядке. Они включают в себя:

    • 200 — OK (вы увидите этот самый больше всего)
    • 201 — создано
    • 202 — принятый
    • 205 — Содержание сброса
    • 206 — Частичное содержание

    3xx Codes

    перенаправляет . Они отображаются, когда вы запрашиваете адрес, но вас отправляют куда-то еще. Они могут быть хорошими или плохими. К ним относятся:

    • 301 – Переехал навсегда
    • 302 – Найдено
    • 304 — Не изменено
    • 305 — Использовать прокси-сервер
    • 307 — Временное перенаправление

    4xx Коды состояния

    Это ошибок клиента . Это означает, что что-то пошло не так с запросом (клиент/пользователь), а не с ответом (веб-сайт/сервер). К ним относятся:

    • 400 – Неверный запрос
    • 401 – Несанкционированный
    • 403 – Запрещенный
    • 404 – Не найдено
    • 408 – Время ожидания запроса
    • 410 – Исчезло0010
    • 429 — слишком много запросов

    5xx коды состояния

    Это ошибки сервера . Это означает, что что-то пошло не так с ответом (веб-сайт/сервер), а не с запросом (клиент/пользователь). К ним относятся:

    • 500 — Внутренняя ошибка сервера
    • 502 — Неисправный шлюз
    • 503 — Служба недоступна
    • 504 — Тайм-аут шлюза

    В заключение

    Хотите узнать больше о конкретном коде? У нас есть серия кратких руководств по каждому ответу HTTP, чтобы вы могли оптимизировать свою стратегию цифрового маркетинга. Возьмите их здесь:

    • Полное руководство по кодам состояний
    • Код состояния 200, Код состояния 301, Код состояния 302, Код состояния 304
    • Код состояния 401, Код состояния 403, Код состояния 404, Код состояния 410
    • Код состояния 429, Код состояния 500, код состояния 503, код состояния 504

    10-кратный рост вашего трафика от Google.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *