[英]Restrict .Net Core API URL for specific URL path segment version
我从.Net Core上的新蜜蜂开始,并尝试在controller
上设置版本controller
( URL路径段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版本方面有所不同。 所有这些ApiCalls都会成功调用HelloWorldController
Get
方法。
以下网址无效(按预期)
<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/
?
任何帮助将不胜感激。
谢谢
您必须使用多个ApiVersion
属性。
[ApiVersion("1.1")]
[ApiVersion("1.0")]
[ApiVersion("1.3")]
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/[controller]")]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.