Я разрабатываю REST API, представляющий диспетчер задач. Он получает запросы от «пользователей», которые хотят выполнить задачу, но иногда служба может отклонить запрос. Запрос правильно сформирован (пользователь аутентифицирован и авторизован, сообщение запроса может быть понято диспетчером задач и т. д.), Поэтому нет ошибки 4xx: это диспетчер задач, который, возможно, из-за чрезмерной нагрузки или перегрузки, или потому что из-за своей неспособности управлять запросом что, отказывается выполнить запрос. Тем не менее, он может выполнить его позже.
Я мог бы ответить на запрос с помощью объекта JSON, который включает логическое значение «Запрос принят», но я считаю, что 200 - это неправильный код состояния для возврата. Вероятно, мне следует вернуть другой код состояния, который должен достаточно красноречиво указывать на то, что запрос принят или отклонен. Какой код статуса мне следует использовать?





Вы можете использовать 202 ACCEPTED, если ваш API принимает запрос, но не выполняет его немедленно. Это не совсем ваш случай, если я правильно понимаю?
503 СЕРВИС НЕДОСТУПЕН, вероятно, более подходит, поскольку служба отказывается отвечать на запрос.
503 SERVICE UNAVAILABLE The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.
503 только говорит, что служба временно недоступна, поэтому другие запросы могут пройти.
Я думаю, вам нужно хотя бы что-то в диапазоне 5xx, потому что ваш API отказывает в запросе
Я полностью согласен с диапазоном 5xx. Я также рассмотрел 429 СЛИШКОМ МНОГО ЗАПРОСОВ, но на самом деле это означает «слишком много запросов от этого клиента», так что дело не в этом.
Он не должен быть в диапазоне 4xx, поскольку это не ошибка, вызванная запросом клиента, а скорее проблема сервера. 503 - это наиболее подходящий код состояния для вашего варианта использования.
Я выбрал 503. Спасибо за вашу помощь!
Оба они звучат как частично приемлемые коды. 202 не сообщает о том, что запрос на самом деле не будет обработан. Что касается 503, это не услуга, который в настоящее время недоступен: служба может отклонить ваш запрос на выполнение задачи, но она все равно будет отвечать на запросы о своем статусе или на другие запросы. Я не уверен, насколько сильна семантика этих кодов, и смогу ли я адаптировать их к моему случаю.