Not*_*bad 6 .net asp.net routes .net-core asp.net-core
我正在尝试向我的 web api 添加版本控制,在阅读了 asp .net core 文档后,似乎 IApplicationBuilder.UsePathBase 可以达到此目的。而且,确实如此,但有一个怪癖。无需添加版本控制路径,仍然可以访问 api。
作为示例,我使用它向我的 api 添加 v1 路径:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHttpContextAccessor httpAccesor)
{
app.UsePathBase("/api/v1");
....
}
Run Code Online (Sandbox Code Playgroud)
现在我可以使用 http://www...com/api/v1/cars 或使用 http://www...com/cars 访问我的汽车端点。
汽车控制器路由设置如下:
[Authorize]
[Route("/[controller]")]
[ApiController]
public class DriversController : ControllerBase
{
....
}
Run Code Online (Sandbox Code Playgroud)
那么,这就是它的工作原理吗?是否有可能只允许具有相应版本控制路径的路径?
根据文档,这里从请求中提取指定的路径。如果请求中未提供,则会被忽略。
它对于微服务架构很有用,其中多个微服务由 docker 托管,并且负载均衡器可以根据请求路径路由请求。因此不需要进行任何 URL 映射或重写路径。
希望这能消除您的疑问。
.Net core 2.2 版本控制:我们在项目中使用了Microsoft.AspNetCore.Mvc.Versioning NuGet 包或GIT,它位于 .net core 2.2 中。需要在Setup.cs->ConfigureService方法文件中进行一些设置,然后您可以在控制器中使用,即 [Route("api/v{v:apiVersion}/[controller]")]
Setup.cs -> 配置服务
services.AddApiVersioning(o =>
{
o.ReportApiVersions = true;
o.AssumeDefaultVersionWhenUnspecified = true;
o.DefaultApiVersion = new ApiVersion(1, 0);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4466 次 |
| 最近记录: |