@firstmixon

Swagger не все модели отображаются, как исправвить?

Пытаюсь разобраться с MVC, использую 2019 студию, в моем проекте, все модели(классы, из папки MODELS, отображались на странице API), в том числе все контроллеры, но тут сегодня часть моделей исчезли, то есть не все, контролеров это не коснулось, как восстановить, чтобы отображались модели?

Потеряно 80% моделей, в проекте все есть и через контролеры работают, но не пойму чем отличаются 20% от потерянных 80%, происшествие произошло только сегодня, при запуске проекта все было нормально, а к обеду заметил отсутствие 80%, все модели на сетерах и гетерах, не пойму в чем проблема.
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka Куратор тега C#
Токсичный шарпист
Если у тебя контроллер возвращает 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);
}

https://learn.microsoft.com/ru-ru/aspnet/core/tuto...

[HttpPost("{id}")]
[ProducesResponseType(typeof(Product), 200)]
[ProducesResponseType(typeof(IDictionary<string, string>), 400)]
[ProducesResponseType(500)]
public IActionResult GetById(int id)

https://github.com/domaindrivendev/Swashbuckle.Asp...
Ответ написан
@firstmixon Автор вопроса
День добрый!
Проблема найдена, модели отображались в 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
   }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы