В настоящее время я использую swashbuckle.AspNetCore.SwaggerUI 3.0 и создаю свой веб-API, а в своих контроллерах я наследую от базового контроллера.
public class DocumentTypeController : BaseController<ObjectNameGoesHere>
{
public DocumentTypeController(IRepository repository) : base(repository)
{
//In here I will just inherit from the methods from the
//BaseController
}
}
Все методы находятся в BaseController, который я могу переопределить. Я получаю сообщение об ошибке, подобное этому:
Ошибка выборки: внутренняя ошибка сервера /swagger/v1/swagger.json. Любые идеи, которые могут решить эту проблему?
public abstract class BaseController<T> : Controller where T : class, IEntity
{
protected IRepository _repo;
public BaseController(IRepository repository)
{
_repo = repository;
}
[HttpGet]
public virtual IQueryable<T> Get([FromServices] IQueryableRepository repository)
{
return repository.GetIQueryable<T>();
}
[HttpGet("{id:int}")]
[Route("GetByID")]
public async virtual Task<IActionResult> GetByIntID(int id)
{
try
{
var data = await _repo.GetByIdAsync<T>(id);
return Ok(data);
}
catch (Exception exp)
{
return BadRequest("Bad Request");
}
}
[HttpPost]
[ApiExplorerSettings(IgnoreApi = true)]
public async virtual Task<IActionResult> Post([FromBody] T dto)
{
try
{
if (ModelState.IsValid)
{
_repo.Create<T>(dto);
var result = await _repo.SaveAndReturnOneAsync(dto);
return CreatedAtAction("GetByIntID", new { id = result.Id }, result);
}
else
{
return BadRequest("Bad Request: Your data is incorrect");
}
}
catch (Exception exp)
{
return BadRequest("Bad Request: Item Not Added");
}
}
[HttpPut]
[ApiExplorerSettings(IgnoreApi = true)]
public async virtual Task<IActionResult> Put([FromBody] T dto)
{
try
{
if (ModelState.IsValid)
{
_repo.Update<T>(dto);
await _repo.SaveAsync();
return Accepted();
}
else
{
return BadRequest("Bad Request: Your data is incorrect");
}
}
catch (Exception exp)
{
return BadRequest("Bad Request: Item not Updated");
}
}
}