您可以像下面那样实现版本控制。在Startup.cs、ConfigureServices() 中,您可以执行以下操作:
services.AddApiVersioning(option =>
{
option.ReportApiVersions = true;
option.AssumeDefaultVersionWhenUnspecified = true;
option.DefaultApiVersion = new ApiVersion(1, 0);
option.AssumeDefaultVersionWhenUnspecified = true;
});
现在,您可以拥有多个版本的控制器,如下所示:
namespace APIVersions.Controllers
{
[ApiVersion("1.0")]
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpGet]
public IActionResult Get() => Ok(new string[] { "value1" });
}
}
版本 2:
namespace APIVersions.Controllers3
{
[ApiVersion("2.0")]
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpGet]
public IActionResult Get() => Ok(new string[] { "value1" });
}
}
现在,在您的浏览器中,您可以使用?api-version=2,它将进入第二个版本。
另外,您可以这样做:
namespace APIVersions.Controllers
{
[ApiVersion("1.0")]
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/[controller]")]
public class ValuesController : Controller
{
[HttpGet]
public IActionResult Get() => Ok(new string[] { "value1" });
[HttpGet, MapToApiVersion("2.0")]
public IActionResult GetV3() => Ok(new string[] { "value3" });
}
}
这样,您可以调用所需的 Get 方法。
参考:https://www.talkingdotnet.com/support-multiple-versions-of-asp-net-core-web-api/