c# - 版本控制 API 端点

标签 c# asp.net-web-api

我正在使用需要版本控制的 API。现在,我正在这样做:

namespace MixApi.UI.Controllers
{
    [ApiVersion("1.0")]
    public class VoController : ApiController
    {
        [Route("api/v{version:apiVersion}/vo/order/")]
        public IHttpActionResult Method1() { }
    }
}

namespace MixApi.UI.Controllers.v2
{
    [ApiVersion("2.0")]
    public class VoController : ApiController
    {
        [Route("api/v{version:apiVersion}/vo/order/")]
        public IHttpActionResult Method1() { } // Improved this with new logic

        [Route("api/v{version:apiVersion}/vo/order2/")]
        public IHttpActionResult Method2() { } // New method for v2
    }
}

但是,假设我要添加一个新 Controller ,假设为 ArticleController。我应该如何版本化?应该是 v1 还是 v2?

我认为它应该是 v1,因为它是该 Controller /端点的第一个版本。但后来我意识到我正在对 Controller (端点)进行版本控制,而不是 API 本身。因此,我对在这种情况下应该如何进行版本控制感到有点困惑。

你们是怎么做到的?

最佳答案

您可以为 Controller 分配多个版本,在您的情况下,我可能会考虑这样做,因此如果您使用版本 2 并推出全新 Controller ,您可以为其分配一个版本或两个版本。

[Authorize]
[ApiVersion("3.0")]
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/Users")]

我确实认为该版本应该被视为完整的产品,因此用户会使用版本 2,因为它是最新的(例如),但突然间他们必须引用版本 1 只是为了新功能。可能会引起困惑并且似乎对客户不友好

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

相关文章:

c# - 重启 WebDev.WebServer

c# - 在 ASP.NET MVC 3 应用程序中使用自定义 html 帮助程序

c# - Elasticsearch 地理位置未使用NEST映射到geo_point类型

c# - ASP Web API 在不同的应用程序实例之间共享代码库?

file-upload - 在保存文件之前使用 MultipartFormDataStreamProvider 检测文件大小?

c# - 用户似乎没有在 dotnet core 2.0 中的“Use”管道中进行身份验证

c# - FileSystemWatcher 和 GUI

asp.net - CORS 不适用于 Thinktecture.IdentityModel.45/ token

c# - API线程和静态方法

c# - 使用 .NET Core 的 Firebase 身份验证 (JWT)