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/product
Startup
下的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 ActionResult
Startup
的配置参数也要改一下: 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=2
controller
只要用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 Segement
option.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