Ошибка: нет фразы причины, возвращенной интерфейсом Swagger для кода ответа 429 - PullRequest
0 голосов
/ 29 апреля 2020

Язык: C#,. Net Core 3.1

Привет всем,

У меня есть конфигурация API, которая до сих пор работала нормально с большинством распространенных состояний HTTP коды: неверный запрос, неавторизованный, успешный и т. д. c.

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

Я реализовал это в коде и снабдил контроллер следующим (комментарии удаляются, чтобы не показывать логическая работа метода):

    /// <response code="200">Returns a 200 ....</response>
    /// <response code="400">Returns 400 ...</response>   
    /// <response code="500">Returns 500 ...</response>
    /// <response code="424">Returns a 424 ...</response>
    /// <response code="429">Returns a 429 response in the event of too many requests</response>
    [HttpPost("request")]
    [ProducesResponseType(StatusCodes.Status200OK)]
    [ProducesResponseType(StatusCodes.Status400BadRequest)]
    [ProducesResponseType(StatusCodes.Status500InternalServerError)]
    [ProducesResponseType(StatusCodes.Status424FailedDependency)]
    [ProducesResponseType(StatusCodes.Status429TooManyRequests)] 

Логи c, к счастью, работает как положено и возвращает код ответа 429, однако в интерфейсе Swagger я получаю следующую ошибку:

Error: No Reason Phrase response for 429 code

В коде у моего контроллера есть тип возврата ActionResult и в логе c, который делает возврат, я попробовал следующее:

            case ApplicationServices.Enum.OtpStatusEnum.Failure:
                return StatusCode(424);
            case ApplicationServices.Enum.OtpStatusEnum.Blocked:
                return Unauthorized();
            case ApplicationServices.Enum.OtpStatusEnum.TooManyRequests:

                // return StatusCode(429);

                var result = new StatusCodeResult(429)
                return result;
            default:
                return StatusCode(500);

Ни то, ни другое эти два варианта дают ожидаемый результат, поэтому мой вопрос: является ли это проблемой, когда Swashbuckle неправильно реализовал поддержку кода ответа 429, и есть ли что-то, что я могу сделать, чтобы добавить это, чтобы гарантировать, что этот стандартный код поддерживается правильно

...