Я работаю над API, и у меня есть следующая проблема
У меня есть абстрактный ApiController, например:
public abstract class ApiController<TService> : ApiController
where TService : BaseService
{
#region Fields
/// <summary>
/// Data manager
/// </summary>
protected TService Service { get; } = ServiceCollectionHelper.GetElementFromDependencyInjection<TService>();
#endregion
#region Constructors
#endregion
}
[ApiController]
[Authorize]
[Produces("application/json")]
[Route("api", Name = "BaseApiRoute")]
public abstract class ApiController : ControllerBase
{
}
У меня есть несколько контроллеров, которые наследуют ApiController<TService>
, или ApiController
.
Пример контроллеров:
[Route("[controller]")]
public class RegionsController : ApiController<RegionService>
{
#region Fields
#endregion
#region Constructor
#endregion
#region Methods
/// <summary>
/// Get the regions
/// </summary>
/// <param name="includeDepartments">Include the region departments</param>
/// <returns>Regions</returns>
[HttpGet]
[ProducesResponseType(typeof(IEnumerable<DepartmentDTO>), StatusCodes.Status200OK)]
public async Task<ActionResult<IEnumerable<RegionDTO>>> GetAsync(bool includeDepartments = false)
{
return this.Ok(await this.Service.GetAsync(includeDepartments));
}
#endregion
}
Обычно маршрут для метода RegionsController.GetAsync
должен быть /api/regions
с методом GET
, но это /regions
Почему наследование не работает и как это исправить, чтобы иметь префикс /api
для всех маршрутов?
Я пытался заменить [Route("/api")]
на [Area("/api')]
, но это не работал.
Спасибо