【发布时间】:2017-05-26 18:51:42
【问题描述】:
我刚刚开始接触WebApi,我想了解的是,您是否可以拥有 1 个控制器来处理多个版本。
所以不是有一个v1/v2 文件夹,其中 v2 在 v1 中有控制器的副本,但 v2 中的逻辑与 v1 不同
你能有 1 个控制器来处理所有 api 版本吗?
我在控制器上看到了对 [APiVersion(...)] 属性的引用,但是当我尝试实现我认为正确的东西时,什么都没有被调用
例子:
[ApiVersion("1.0")]
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/login")]
public class LoginController : ApiController
{
[HttpGet]
[MapToApiVersion("1.0")]
[Route("login/{username}/{password}")]
[ResponseType(typeof(LoginResult))]
public LoginResult GetLoginInfo(string username, string password)
{
//v1 logic
}
[HttpGet]
[MapToApiVersion("2.0")]
[Route("login/{username}/{password}")]
[ResponseType(typeof(LoginResult))]
public LoginResult GetLoginInfo2(string username, string password)
{
//v2 logic
}
}
我使用了这个answer 作为参考,但它似乎不起作用。使用动作是解决这个问题的方法吗?
理想情况下,我希望能够在调用它的任何地方更改版本号,而不是更改操作名称,但我不知道这是否可能
【问题讨论】:
标签: c# asp.net-web-api asp.net-web-api-routing