asp.net core web api 版本控控制
2021-01-28 03:14
标签:turn mic 方法 不同的 xiaomi 接口 文件夹 addm 版本 通过微软的一个库 以两种形式组织了 需要注意的是, 在 URL 路径中添加版本,类似这样: 怎么实现呢? 在 我们的 可以看到效果: 通过url参数的方式也可以实现版本控制: 与上面不同的是 版本信息可以放在url的参数中,可以放在url路径中,也可放在请求的header里,这样显的接口干净利索感知不到版本的存在。 和使用QueryString的实现方式大体一样,只是在配置中不一样, 无论是什么配置都是支持 根据 各种特性的在不同场景的用法 定义了当前 其中有个 如果一个 如果你想一个 asp.net core web api 版本控控制 标签:turn mic 方法 不同的 xiaomi 接口 文件夹 addm 版本 原文地址:https://www.cnblogs.com/ricolee/p/web-api-version.htmlMicrosoft.AspNetCore.Mvc.Versioning实现asp.net core web api的版本控制。Controller:

Microsoft.AspNetCore.Mvc.Versioning版本必须是>=3.1.0,不然相同路由会出现以下这样的错误:
URL Path Segment
/api/v1/product
/api/v2/productStartup下的ConfigureServices方法加如下的配置: public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddApiVersioning(option =>
{
option.ReportApiVersions = true;
option.AssumeDefaultVersionWhenUnspecified = true;
option.DefaultApiVersion = new ApiVersion(1, 0);
});
}Controller路由需要配置成如下,[ApiVersion("1.0")]控制访问当前的版本:[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/product")]
[ApiController]
public class ProductV1Controller : ControllerBase
{
[HttpGet]
public ActionResultStartup的配置参数也要改一下: services.AddApiVersioning(option =>
{
option.ReportApiVersions = true;
option.ApiVersionReader = new QueryStringApiVersionReader("api-version");
option.AssumeDefaultVersionWhenUnspecified = true;
option.DefaultApiVersion = new ApiVersion(1, 0);
});
QueryString
/api/production?api-version=1
/api/production?api-version=2controller只要用ApiVersion特性就够了,[ApiVersion("1.0")]
[Route("api/[controller]")]
[ApiController]
public class ProductionController : ControllerBase
{
[HttpGet]
public ActionResult
Head
Contrller无需改动:services.AddApiVersioning(option =>
{
option.ReportApiVersions = true;
//option.ApiVersionReader = new QueryStringApiVersionReader("api-version");
option.ApiVersionReader = new HeaderApiVersionReader("api-version");
option.AssumeDefaultVersionWhenUnspecified = true;
option.DefaultApiVersion = new ApiVersion(1, 0);
});

三种实现方式对比
Url Path Segementoption.ApiVersionReader参数的不同支持的会分别支持QueryString和Header两种方式。Microsoft.AspNetCore.Mvc.Versioning
ApiVersion
Controller的版本,可以支持多个。Deprecated参数:用于表示当前版本是否弃用的信息,当然接口还是可以正常调用的。MapToApiVersion
Controller下有多个版本,有接口支持V1版本,有的接口支持V2版本,可以使用MapToApiVersion实现具体的哪个接口支持哪个版本调用,这个特性是打在具体的接口方法上的。ApiVersionNeutral
Controller任意版本都可以调用,则可以加上该特性参考
文章标题:asp.net core web api 版本控控制
文章链接:http://soscw.com/index.php/essay/48042.html