繁体   English   中英

限制.Net Core API URL的特定URL路径段版本

[英]Restrict .Net Core API URL for specific URL path segment version

我从.Net Core上的新蜜蜂开始,并尝试在controller上设置版本controllerURL路径段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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM