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

问题描述 投票:1回答:1

我已经开始作为.Net Core上的新手,并尝试在controller(URL Path Segment 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/的结果?

任何帮助将不胜感激。

谢谢

c# rest api .net-core
1个回答
0
投票

您必须使用多个ApiVersion属性。

[ApiVersion("1.1")]
[ApiVersion("1.0")]
[ApiVersion("1.3")]
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/[controller]")]
© www.soinside.com 2019 - 2024. All rights reserved.