На самом деле я работаю с. NET Core 3,
, и у меня есть контроллеры с таким маршрутом:
[ApiController]
[Route("customers/app")]
public class CustomerAppController : ControllerBase
{
}
То, что я хотел бы сделать, это иметь Базовый контроллер, где я могу разместить много вещей, которые я хочу, для всех контроллеров, включая префикс маршрута, например:
[Route("api/v1/[controller]")]
public class CoreController : ControllerBase
{
protected virtual Object HandleException(Exception ex, string path, ILogger logger)
{
logger.LogError(ex, "Unhandled exception.");
return StatusCode(5000, new { ex.Message });
}
}
Тогда контроллер будет:
[ApiController]
[Route("customers/app")]
public class CustomerAppController : CoreController
{
//TODO: put actions here
public override Object HandleException(Exception ex, string path, ILogger logger) { }
}
Как я могу сделать эту работу?
Я обнаружил, что могу использовать этот метод:
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UsePathBase("/api/v1");
//other things
}
Теперь я могу вызывать свой API, используя localhost/api/v1/randompath
, но он также работает, если я использую localhost/randompath