Swagger не показывает параметров для действий контроллера, которые имеют параметры - PullRequest
0 голосов
/ 07 марта 2020

Swagger не показывает параметры в пользовательском интерфейсе и JSON, даже если у моего метода есть параметры. Это особенно происходит, когда я добавляю тег [FromBody] swagger UI без параметров JSON файл без параметров Метод действия:

    [HttpPost("Action")]
    public IActionResult Action([FromBody] string message)
    {
        return Ok(message);
    }

Я использовал fre sh Asp. net core 3.1 и 2.2 веб-приложение с шаблоном API чтобы проверить это, я настроил его в точности как documnetaiton ConfigureServices:

services.AddMvc();

services.AddSwaggerGen(c =>
{
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
}

Настройка:

 app.UseSwagger();

   app.UseSwaggerUI(c =>
 {
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
 });

Работает , работает , когда я использую другие атрибуты , такие как [FromRoute] & [FromHeader] и так далее ... Я посмотрел на примеров и swagger показывает параметры из метода post


Я также пробовал объекты вроде этого:

    public class Message
{
    public int ID { get; set; }
    public string body { get; set; }
}

С помощью этого действия:

 [HttpPost("Action")]
 public IActionResult Action([FromBody] Message message)
 {
    return Ok(message);
 }

то же самое результат (без параметров) но он показывает схему


Так что я делаю не так? как я могу документировать параметры публикации, такие как примеры

1 Ответ

0 голосов
/ 09 марта 2020

Вам следует изучить этот пример кода при работе с OpenAPI 3.0: http://petstore.swagger.io: 8080 /

OpenAPI 3.0 предоставляет ключевое слово requestBody для описания тел запросов. Он отличает guish полезную нагрузку от parameters (например, строка запроса и PATH). requestBody является более гибким в том смысле, что позволяет использовать разные типы мультимедиа, такие как JSON, XML, данные форм, простой текст и другие, и использовать разные схемы для разных типов мультимедиа:

https://swagger.io/docs/specification/describing-request-body/

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

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