Какой код состояния HTTP вы используете, когда конечная точка отключена с помощью флага функции/переключателя функции?

Я использую служба 503 недоступна или отключена на техническое обслуживание.

Однако некоторые клиентские библиотеки http, например axios, рассматривают 503 как повторяемую ошибку.

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

Любые предложения по другим кодам, которые люди используют?


person nnedoklanov    schedule 18.02.2020    source источник
comment
Каким было бы поведение, если бы эта функция никогда не была реализована? (Например, работа с более старой версией сервера.) Это то, что вы должны сделать, если флаг функции отключен.   -  person Raymond Chen    schedule 18.02.2020
comment
Переключатель позволяет переходить от одной реализации к другой, будет период постепенного перехода. Вылет с ошибкой вызовет ненужные предупреждения.   -  person nnedoklanov    schedule 18.02.2020


Ответы (1)


Коды состояния — это метаданные, относящиеся к домену «передача документов по сети». Общая семантика кодов состояния — это то, что позволяет компонентам общего назначения, поддерживающим HTTP, действовать разумно.

Итак, вам следует подумать о семантике HTTP.

Например, если ваш сервер не имеет доступа к текущему представлению ресурса, идентифицированного целевым uri запроса, вы должны выдать ответ 404 Not Found. Если запрос запрещен, то 403 Forbidden. Или 451 Unavailable for Legal Reasons, если это предполагаемое значение.

Другими словами: это зависит.

Но от чего это не зависит, так это от «флажка функции»; это деталь реализации. «Единый интерфейс» — это фасад, скрывающий технические детали, которые различаются от одной реализации к другой. Со стороны ваш API создает иллюзию того, что ваша машина — просто еще один скучный веб-сервер.

person VoiceOfUnreason    schedule 18.02.2020