Swagger для Asp.Net. Api возвращает анонимный тип. Можно ли в swaggerUi показывать пример ответа?

Методы моих Api контроллеров принимают тип object в качестве параметра (json) и возвращают object (json) в ответ, который формируется в хранимых процедурах.

    public Object TestSwagger(Object requestParams)
    {
        return myService.CallStoredProcedure(requestParams);
    }

На фронте хотят чтобы через Swagger было видно пример входящих параметров и возвращаемого объекта, то есть пример джейсона. На официальном сайте Сваггера есть пример как это сделать через Swagger Editor, однако я использую для сваггера Swashbuckle и не совсем понимаю как это сделать в моём случае. Был бы благодарен за любые советы.


Ответы (1 шт):

Автор решения: Peter Lavreniuk

Во первых не использовать object. А использовать свои "нормальные" типы объектов.

Если Вы все таки потом приводите object к какому то типу и никак не хотите менять тип возвращаемого значения и тип аргумента то используйте атрибуты :

[Produces("application/json")]
[ProducesErrorResponseType(typeof(void))]
[ProducesResponseType(typeof(BankDto), StatusCodes.Status200OK)]

Для аргументов нет никаких атрибутов, то есть Вы никаким образом не сможете сказать о своих соглашениях - так как огромная вариативного того какой у Вас аргумент и какой способ его предоставления [FromBody] или [FromQuery]. Так что лучше переписать контроллер так :

public ResponseObject TestSwagger(RequestObject requestParams)
{
    return myService.CallStoredProcedure(requestParams);
}

И Swagger сможет сгенерировать для Вас нормальные соглашения!

Подробнее об атрибутах

Get started with Swashbuckle and ASP.NET Core

→ Ссылка