Swagger не все модели отображаются, как исправвить?
Пытаюсь разобраться с MVC, использую 2019 студию, в моем проекте, все модели(классы, из папки MODELS, отображались на странице API), в том числе все контроллеры, но тут сегодня часть моделей исчезли, то есть не все, контролеров это не коснулось, как восстановить, чтобы отображались модели?
Потеряно 80% моделей, в проекте все есть и через контролеры работают, но не пойму чем отличаются 20% от потерянных 80%, происшествие произошло только сегодня, при запуске проекта все было нормально, а к обеду заметил отсутствие 80%, все модели на сетерах и гетерах, не пойму в чем проблема.
Если у тебя контроллер возвращает IActionResult, но ты хочешь, чтобы в сваггере отображался нормальный тип - используй атрибут [PrducesResponseType(...)]
Либо используй тип ActionResult<T> в качестве возвращаемого значения (а может даже оба) https://learn.microsoft.com/ru-ru/dotnet/api/micro...
Вот пример из документации:
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> Create(TodoItem item)
{
_context.TodoItems.Add(item);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(Get), new { id = item.Id }, item);
}
День добрый!
Проблема найдена, модели отображались в Swagger если методы контролера возвращали соотвествующие модели, я начитавшись интернетов решил иногда возвращать код 500 а не 200 и исходя из этого часть контролеров переписал на IActionResult, соотвественно после этого модели\классы стали не доступны, сейчас думаю как обеспечить контролер методом который будет типа
/// <summary>
/// Описание модели MyModel
/// </summary>
[HttpGet("")]//что тут можно написать, для того что бы метод не конфликтовал с методом Get?
public MyModel Get_Model()
{
return null;
}
/// <summary>
/// Описание модели MyModel
/// </summary>
[HttpGet("")]
public IActionResult Get()
{
var res= new List<MyModel>();
if(res!=null)
{
return Ok(res);// code 200
}
else
{
return StatusCode(500);// code 500
}
}