Удалить ProducesResponseType атрибут webapi aspnetcore 2.1 - PullRequest
0 голосов
/ 11 июня 2018

В настоящее время я делаю так, как показано ниже, и добавляю атрибут ProducesResponseType для создания лучшей документации API

    [HttpGet(Name=nameof(MyNewMethodAsync)
    [ProducesResponseType(typeof(MyClassResponse), (int)HttpStatusCode.OK)]
    [ProducesResponseType(typeof(MyClassResponse), (int)HttpStatusCode.BadRequest)]
    [ProducesResponseType(typeof(MyClassResponse), (int)HttpStatusCode.NotFound)]
    [SwaggerOperation(nameof(MyNewMethodAsync))]
    public async Task<ActionResult<MyClassResponse>> MyNewMethodAsync([FromQuery] MyClassRequest request)
    {}

мы говорим, что вышеприведенное можно упростить без необходимости в ProducesResponseType и эквивалентно следующему:

    [HttpGet(Name=nameof(MyNewMethodAsync)      
    [SwaggerOperation(nameof(MyNewMethodAsync))]
    public async Task<ActionResult<MyClassResponse>> MyNewMethodAsync([FromQuery] MyClassRequest request)
    {}

А что, если бы я хотел добавить более подробное описание для каждого HttpStatusCode

Большое спасибо

1 Ответ

0 голосов
/ 11 июня 2018

Проще говоря, атрибут ProducesResponseType необходим, если все возможные коды состояния ответа не могут быть определены на основе определения метода.Например, 200 очевидно, но если вам действительно нужно вернуть 201, это нужно будет указать.То же самое для 404 и т. Д. Я не совсем уверен насчет 400, поскольку теперь 2.1 автоматически проверяет ModelState.IsValid, так что теперь это может быть тип ответа по умолчанию, но если нет, то вам также понадобится атрибут для этого.Единственное, что действительно покупает у вас 2.1, больше не нужно указывать сам тип возвращаемого значения, только код состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...