上接:.netcore webapi——基于jwt的简单身份认证与授权(swagger)

 

版本控制的好处是显而易见的,利用swagger展示不同版本的api更能体现效果。

1.安装nuget包:microsoft.aspnetcore.mvc.versioning

 

2. 配置startup类

 2.1  添加新成员 ,用来获取api版本信息

 

     /// <summary>
        /// api版本信息
        /// </summary>
        private iapiversiondescriptionprovider provider;

 2.2 在 configureservices 方法中注册服务

services.addapiversioning(option =>
            {
                // 可选,为true时api返回支持的版本信息
                option.reportapiversions = true;
                // 不提供版本时,默认为1.0
                option.assumedefaultversionwhenunspecified = true;
                // 请求中未指定版本时默认为1.0
                option.defaultapiversion = new apiversion(1, 0);
            }).addversionedapiexplorer(option =>
            {
          // 版本名的格式:v+版本号 option.groupnameformat = "'v'v"; option.assumedefaultversionwhenunspecified = true; }); this.provider = services.buildserviceprovider().getrequiredservice<iapiversiondescriptionprovider>();

 2.3 遍历api版本信息,在原有的addswaggergen方法中循环处理:红色部分

           // 注册swagger服务
            services.addswaggergen(c =>
            {
                // 多版本控制
                foreach (var item in provider.apiversiondescriptions)
                {
                    // 添加文档信息
                    c.swaggerdoc(item.groupname, new info
                    {
                        title = "corewebapi",
                        version = item.apiversion.tostring(),
                        description = "asp.net core webapi",
                        contact = new contact
                        {
                            name = "jee",
                            email = "xiaomaprincess@gmail.com",
                            url = "https://www.cnblogs.com/jixiaosa/"
                        }
                    });
                }
                

 

2.4 修改 configure 方法中的 swaggerui方法,同样做循环处理

       // 配置swaggerui
            app.useswaggerui(c =>
            {
                foreach (var item in provider.apiversiondescriptions)
                {
                    //c.swaggerendpoint("/swagger/v1/swagger.json", "coreapi"); 单版本
                    c.swaggerendpoint($"/swagger/{item.groupname}/swagger.json", "coreapi"+item.apiversion);
                }
                c.routeprefix = string.empty;
            });

 

2.5 在控制器中应用

 2.5.1 在test控制器中添加特性标签以及路由。 1.0版本

 

2.5.1 在value控制器中添加特性标签以及路由。 2.0版本

 

3. 启动项目查看效

 

 

 

gif

 

github:   https://github.com/xiaomaprincess/asp.netcore-webapi

 

多层架构版本:https://github.com/xiaomaprincess/.netcorewebapi