我已经开始作为 .Net Core 的新手,并尝试在controller
(网址路径段Versoning )上设置版本控制。
以下是我的示例controller
[ApiVersion( "1" )]
[Route( "api/v{version:apiVersion}/[controller]" )]
public class HelloWorldController : Controller {
public string Get() => "Hello world!";
}
这就是我在Startup
文件
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddApiVersioning(v =>
{
v.ReportApiVersions = true;
});
}
当我使用以下URL在本地调用API时,结果相同,即成功
<LocalHostUrlHere>/api/v1../HelloWorldController/
<LocalHostUrlHere>/api/v1.0./HelloWorldController/
<LocalHostUrlHere>/api/v1.0/HelloWorldController/
<LocalHostUrlHere>/api/v1/HelloWorldController/
请注意,上述4个调用在API版本上有所不同。所有这些ApiCall都成功调用HelloWorldController
Get
方法。
以下网址不起作用(如预期的那样)
<LocalHostUrlHere>/api/v1.../HelloWorldController/
<LocalHostUrlHere>/api/v1.11/HelloWorldController/
<LocalHostUrlHere>/api/v1.1/HelloWorldController/
<LocalHostUrlHere>/api/v2/HelloWorldController/
我很困惑为什么我会在所有网址上得到结果而不管版本格式!!
还有什么方法可以限制API只返回网址<LocalHostUrlHere>/api/v1/HelloWorldController/
的结果吗?
任何帮助将不胜感激。
由于
答案 0 :(得分:0)
您必须使用多个ApiVersion
属性。
[ApiVersion("1.1")]
[ApiVersion("1.0")]
[ApiVersion("1.3")]
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/[controller]")]