我一直在为我的 WebAPI 使用 asp net core 版本控制组件。需要您帮助了解 AssumeDefaultVersionWhenUnspecified 是如何工作的。(尝试搜索文档,但找不到)
我的启动看起来像下面
services.AddApiVersioning(o => {
o.ReportApiVersions = true;
o.AssumeDefaultVersionWhenUnspecified = true;
o.DefaultApiVersion = new ApiVersion(2, 0);
o.ApiVersionReader = new UrlSegmentApiVersionReader();
});
Run Code Online (Sandbox Code Playgroud)
当路由属性如下所示
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/values")]
[ApiController]
public class ValuesV2Controller : ControllerBase
{
...
}
Run Code Online (Sandbox Code Playgroud)
上述路由仅在指定 api 版本时才有效。即:http://localhost:55401/api/v2/values 如果我调用像http://localhost:55401/api/values,得到 404 错误
我的问题是... AssumeDefaultVersionWhenUnspecified 是如何工作的。它不会忽略Route中的版本吗?看起来 Route 属性优先于 AssumeDefaultVersionWhenUnspecified。如果我选择 QueryString 或 Header 版本控制,并且当 Route 看起来像
[ApiVersion("2.0")]
[Route("api/values")]
Run Code Online (Sandbox Code Playgroud)
默认路由到达 API
我错过了什么还是我的理解有误?如何使用 url 版本控制实现到最新版本 API 的默认路由?