【发布时间】:2021-10-05 00:38:32
【问题描述】:
我有一种情况,我正在向 API 添加版本控制,因此某些 API 函数的路由发生了变化。我还将一些方法从 POST 更改为 GET,因为它更有意义。
我想弃用旧路线,以便人们开始使用新路线。我希望旧路由绑定到我的 API 的 v1,而新路由绑定到 v2。 我通过复制所有函数并用正确的路由、方法和 api 版本标记它们来完成这项工作,但我希望有一个更清洁的解决方案。
下面我的“更清洁”示例显然不起作用,因为在这种情况下你得到了 4 个函数,这些函数都已弃用。
你得到:
- HTTPGET /频道
- HTTPPOST /频道
- HTTPGET /api/v2/channels/get
- HTTPPOST /api/v2/channels/get
/// <summary>
/// Gets a list of all channels
/// </summary>
/// <returns>List of all channels</returns>
[HttpPost, Route("~/channels"), ApiVersion("1.0"), Obsolete("Obsolete, please use /api/v2/channels/get")]
[HttpGet, Route("Get"), ApiVersion("2.0")]
public async Task<ActionResult<IEnumerable<DbChannel>>> GetChannels()
{
return await _context.Monitors.ToListAsync();
}
有什么办法可以让它工作吗?
【问题讨论】:
标签: c# .net asp.net-core .net-core routes