.NetCore WebApi —— Swagger版本控制

Posted jixiaosa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NetCore WebApi —— Swagger版本控制相关的知识,希望对你有一定的参考价值。

上接:.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 = "[email protected]",
                            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

以上是关于.NetCore WebApi —— Swagger版本控制的主要内容,如果未能解决你的问题,请参考以下文章

NetCore偶尔有用篇:NetCore项目WebApi返回Json属性大小写

.NetCore WebApi——Swagger简单配置

Asp.netCore3.0 WebApi从0到1手摸手教你写【1】简单的webapi接口

.NetCore WebApi —— Swagger版本控制

NetCore+Dapper WebApi架构搭建:基本框架

NetCore+Dapper WebApi架构搭建:基本框架