ASP.NET Core ApiVersioning 版本控制

戏子无情 提交于 2019-12-20 05:24:22

1、管理 NuGet 程序包
Microsoft.AspNetCore.Mvc.Versioning                          【注意版本号:4.0.0-preview8.19405.7
Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer     【注意版本号:4.0.0-preview8.19405.7


如果版本安装错了,运行程序会报错,未经处理的异常


*
2、Startup.cs(ConfigureServices)

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers(options =>
    {
        options.UseCentralRoutePrefix(new RouteAttribute("api/v1/[controller]"));
    });

    services.AddApiVersioning(options =>
    {
        options.ReportApiVersions = true; //可选配置,设置为true时,header返回版本信息
        options.ApiVersionReader = new HeaderApiVersionReader("api-version");//HTTP Header报头传递
        options.AssumeDefaultVersionWhenUnspecified = true;//是否启用未指明版本API,指向默认版本
        options.DefaultApiVersion = new ApiVersion(1, 0);
    })
    .AddVersionedApiExplorer(option =>
    {
        option.GroupNameFormat = "'v'VVVV";//api组名格式
        option.AssumeDefaultVersionWhenUnspecified = true;//是否提供API版本服务
    });

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
    });
}

*
3、controller控制器添加ApiVersion特性
在 URL 中追加 api-version=2
*
*
4、通过HTTP Headers来实现版本控制
*
*
*
*
5、参数特性
MapToApiVersion参数:支持多个版本的单控制器
Deprecated参数:弃用,废弃;用Deprecated修饰控制器;仍然可以调用该版本,只是一种让 调用API 用户意识到以下版本在将来会被弃用。
ApiVersionNeutral特性:不支持版本控制;添加 ApiVersionNeutral 属性以从版本控制中退出。
*
*

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!