Ber*_*ian 0 c# routes asp.net-core aspnet-api-versioning
你好,我有一个控制器,我想对其路由进行版本控制。但是,我不希望将 api 版本添加到查询字符串中,而是添加到 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;
}
}
Run Code Online (Sandbox Code Playgroud)
启动
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?}");
});
}
Run Code Online (Sandbox Code Playgroud)
首选用途
"/api/admin/V1/get-computer/3"
"/api/admin/V2/get-computer/4"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?扩展中路由模板的假定形式是什么UseMvc?
小智 7
安装 Microsoft.AspnetCore.Mvc.ApiVersioning 包(如果您尚未这样做)。
通过添加以下内容在“启动”->“ConfigureServices(...)”中配置版本控制服务:
services.AddApiVersioning();
然后在[Route()]控制器的属性中插入 api 版本参数,如下所示:
[Route("api/v{version:apiVersion}/admin")]
这使您的控制器能够使用“api/v1.0/admin”之类的 URL 进行访问。如果您不需要,可以删除 {version} 参数之前的“v”。
有关更多详细信息,请参阅有关 url 版本控制的文档
| 归档时间: |
|
| 查看次数: |
7022 次 |
| 最近记录: |