【发布时间】:2018-02-28 08:23:34
【问题描述】:
我是 .Net Core 上的新手,并尝试在 controller 上设置版本控制(URL 路径段版本控制)。
以下是我的例子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 版本上有所不同。所有这些ApiCalls都成功调用了HelloWorldControllerGet方法。
以下 URL 不起作用(如预期)
<LocalHostUrlHere>/api/v1.../HelloWorldController/
<LocalHostUrlHere>/api/v1.11/HelloWorldController/
<LocalHostUrlHere>/api/v1.1/HelloWorldController/
<LocalHostUrlHere>/api/v2/HelloWorldController/
我很困惑为什么无论版本格式如何,我都会在所有 URL 上得到结果!!。
还有什么方法可以限制 API 只返回 url <LocalHostUrlHere>/api/v1/HelloWorldController/ 的结果?
任何帮助将不胜感激。
谢谢
【问题讨论】: