【问题标题】:Restrict .Net Core API URL for specific URL path segment version限制特定 URL 路径段版本的 .Net Core API URL
【发布时间】: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 &lt;LocalHostUrlHere&gt;/api/v1/HelloWorldController/ 的结果?

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: c# rest api .net-core


    【解决方案1】:

    您必须使用多个ApiVersion 属性。

    [ApiVersion("1.1")]
    [ApiVersion("1.0")]
    [ApiVersion("1.3")]
    [ApiVersion("2.0")]
    [Route("api/v{version:apiVersion}/[controller]")]
    

    【讨论】:

    • 这对我没有帮助,因为我只想在版本中输入“1”。并且不想要 1.0、1..、1.0。在版本中工作(如问题所述)。
    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 2021-05-14
    • 2016-11-27
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多