上接:.NetCore WebApi——基于JWT的简单身份认证与授权(Swagger)

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

1.安装Nuget包:Microsoft.AspNetCore.Mvc.Versioning

.NetCore WebApi —— Swagger版本控制 随笔 第1张

 

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版本

.NetCore WebApi —— Swagger版本控制 随笔 第2张

 

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

.NetCore WebApi —— Swagger版本控制 随笔 第3张

 

3. 启动项目查看效

.NetCore WebApi —— Swagger版本控制 随笔 第4张

 

 

 

Gif.NetCore WebApi —— Swagger版本控制 随笔 第5张

 

github:   https://github.com/xiaoMaPrincess/Asp.NetCore-WebApi

 

多层架构版本:https://github.com/xiaoMaPrincess/.NetCoreWebApi

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄