core版本控制
场景
一期我们要接收各个供应商推送的订单数据,二期可能还要新增其它供应商数据;如果调挣了一期的接口,其它一期接口也要跟着调挣;为了避免这个情况,尝试用一下微软、第三方插件库提供的版本控制,这样既不影响一期接口使用。
配置Swagger
这里先安装一下swagger,在开发过程中把接口展示出来给前端使用
swashbuckle.aspnetcore
注入
builder.Services.AddSwaggerGen(option =>
{
option.SwaggerDoc("v1", new OpenApiInfo {
Title = "Demo", Version = "V1" });
});
配置中间件
app.UseSwagger();
app.UseSwaggerUI(option =>
{
option.SwaggerEndpoint("/swagger/v1/swagger.json", "Demo");
});
1.可以使用路由来实现版本控制(Route)
- 这个api地址是:/api/v1/test/getx。代码中[controller]是个可替换变量,编译时会替换为当前控制器的名称。
[Route("api/v1/[controller]")]
[ApiController]
public class testController : ControllerBase
{
[HttpGet("getX")]
public object Get()
{
return "test";
}
}
- 这样使用的一个好处就是,算是实现了一个接口的版本迭代;这样做比较LOW,因为版本号是硬编码在代码中的
[Route("api/[controller]")]
[ApiController]
public class RouteVersionControlController : ControllerBase
{
[Route("v2/demoresult")]
[HttpPost]
public object demoresult_1()
{
return "123456";
}
[Route("v1/demoresult")]
[HttpPost]
public object demoresult()
{
return "123";
}
}