您好,我有一个控制器,我想对其路由进行版本控制。但是我不希望将 api-version 添加到查询字符串中,而是添加到 url 的开头,在控制器名称之后:
典型路径: /api/admin/get-computer/1
版本化路径: /api/admin/V[version]/get-computer/1
我不明白如何从以下位置配置控制器和UseMvc
扩展Startup
:
[ApiVersion("1.0")]
[ApiVersion("2.0")]
[Route("/api/admin")]
public class AdminController : Controller {
[HttpGet]
[MapToApiVersion("1.0")]
[Route("/get-computer")]
public async Task<ActionResult<Catalog>> GetComputerAsync1(int id) {
return null;
}
[HttpGet]
[MapToApiVersion("2.0")]
[Route("/get-computer")]
public async Task<ActionResult<Catalog>> GetCatalogAsync2(int id) {
return null;
}
}
启动
public void Configure(IApplicationBuilder app) {
app.UseCors(x => x.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
app.UseMvc(routes => {
routes.MapRoute(
name: "default",
template: "{controller=Admin}/V[???]/{action=Index}/{id?}");
});
}
首选用法
"/api/admin/V1/get-computer/3"
"/api/admin/V2/get-computer/4"
我怎样才能做到这一点?UseMvc
扩展中路由模板的假定形式是什么?