gpt4 book ai didi

c# - Web API 2 中的版本控制

转载 作者:行者123 更新时间:2023-11-30 21:52:00 25 4
gpt4 key购买 nike

有一个关于 Web Api 2.0 版本控制的快速问题。

我开发了一个完全 RESTful API,但是我有 2 个同名的 Controller 。

我根据不同的文件夹将它们放在不同的命名空间中。(例如 v1 和 v2 文件夹)。

enter image description here

我还使用普通的 NamespaceHttpControllerSelector 配置了正确的路由。所以到目前为止,一切正常。

但是我有一个问题......即使我将 EmailsController 放在根级别,仍然可以对 Emails Controller 进行版本控制 吗?

例如

Controllers/v1/EmailControllers

Controllers/EmailsControllers

这还有可能吗?

编辑:

我忘了说我没有使用 RoutePrefix 属性,因为我在 RouteConstraint 上一直收到错误。

我用以下内容装饰了我的操作方法(这似乎有点多余,因为它们本质上具有相同的命名空间):

[Route("api/{apiVersion1:ApiVersion1Constraint(v1)}/emails/LogEmails", Name = "LogEmailsRoute_1")]

最佳答案

你试过 [ApiVersion] 属性吗

    [ApiVersion( "1.0", Deprecated = true )]    
[ApiVersion( "2.0" )]
[ApiVersion( "3.0" )]
[Route( "api/v{version:apiVersion}/email" )]
public class Email2Controller : Controller {

[HttpGet]
public string Get() => "Email v2!";

[HttpGet, MapToApiVersion( "3.0" )]
public string GetV3() => "Email v3!";

}

关于c# - Web API 2 中的版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35073836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com