【发布时间】:2021-06-19 04:52:31
【问题描述】:
我有一个 ASP.NET Core 3.1 API,我正在为我的一个控制器引入一个新版本。 我正在使用 Microsoft.AspNetCore.Mvc.Versioning NuGet 包,并将新版本设置为默认版本。 我所有的其他控制器都应该适用于旧版本 (1.0) 和新版本 (1.1)。
例如:
[ApiVersion("1.0", Deprecated = true)]
public class MySampleController
{
}
[ApiVersion("1.1")]
public class MyNewSampleController
{
}
[ApiVersion("1.0", Deprecated = true)]
[ApiVersion("1.1")]
public class AllOtherController
{
}
问题:
我真的必须将所有版本添加到所有控制器吗?
有没有更好/正确的处理方式?
我尝试使用 [ApiVersionNeutral] 但这似乎不正确,根据documentation,应该只在特殊情况下使用。 如果我不添加 [ApiVersion] 属性,则默认为新的 1.1 版本,并且 1.0 不再有效。
由于这是我的第一个 SO 问题,我希望它符合指南 :)
【问题讨论】:
-
我只在发生重大更改时使用新控制器。在所有其他情况下,我只是将新版本添加到现有控制器中。所以
AllOtherController在我的情况下是多余的。 -
就我而言,这是一项重大变革。实际上是[Route]发生了变化。
标签: c# asp.net-core asp.net-core-webapi asp.net-core-3.1 api-versioning