如何设置 web api 版本控制?
How to set up web api versioning?
你好,我有一个控制器,我想对其 routes.However 进行版本控制,我不想在查询字符串中添加 api 版本,而是在 url 的开头,在控制器名称之后:
典型路径:/api/admin/get-computer/1
版本化路径:/api/admin/V[version]/get-computer/1
我不明白如何从 Startup
:
配置控制器和 UseMvc
扩展
[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
扩展中路由模板的假定形式是什么?
安装包 Microsoft.AspnetCore.Mvc.ApiVersioning(如果您还没有安装)。
在您的 Startup -> ConfigureServices(...) 中配置版本控制服务,方法是添加:
services.AddApiVersioning();
然后在控制器的 [Route()]
属性中插入 api 版本参数,如下所示:
[Route("api/v{version:apiVersion}/admin")]
这使您的控制器可以被 "api/v1.0/admin" 这样的 url 命中。如果不需要,可以删除 {version} 参数前的 'v'。
有关详细信息,请参阅 documentation on url versioning
你好,我有一个控制器,我想对其 routes.However 进行版本控制,我不想在查询字符串中添加 api 版本,而是在 url 的开头,在控制器名称之后:
典型路径:/api/admin/get-computer/1
版本化路径:/api/admin/V[version]/get-computer/1
我不明白如何从 Startup
:
UseMvc
扩展
[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
扩展中路由模板的假定形式是什么?
安装包 Microsoft.AspnetCore.Mvc.ApiVersioning(如果您还没有安装)。
在您的 Startup -> ConfigureServices(...) 中配置版本控制服务,方法是添加:
services.AddApiVersioning();
然后在控制器的 [Route()]
属性中插入 api 版本参数,如下所示:
[Route("api/v{version:apiVersion}/admin")]
这使您的控制器可以被 "api/v1.0/admin" 这样的 url 命中。如果不需要,可以删除 {version} 参数前的 'v'。
有关详细信息,请参阅 documentation on url versioning