.net7 练习

122 阅读1分钟

Swagger 配置接口注释

Program.cs 中配置

//生成接口注释
builder.Services.AddSwaggerGen(a =>
{
    a.SwaggerDoc("v1", new OpenApiInfo { Title = "练习 测试", Version = "第一版", Description = "描述吧" });
    var file = Path.Combine(AppContext.BaseDirectory, "ouyang.WebApi.xml");
    a.IncludeXmlComments(file, true);

});

右键项目,选择属性,生成,输出:选择文档文件

image.png

Swagger配置封装

通用版本,接口注释

using Microsoft.OpenApi.Models;

namespace ouyang.WebApi.Untility.SwaggerExt
{
    /// <summary>
    /// Swagger拓展
    /// 设成静态方法this调用,在Program.cs中参数可提前
    /// </summary>
    public static class CustomSwaggerExt
    {
        /// <summary>
        /// 配置Swagger
        /// </summary>
        /// <param name="services"></param>
        public static void AddSwaggerExt(this IServiceCollection services)
        {
            services.AddEndpointsApiExplorer();
            //builder.Services.AddSwaggerGen();
            services.AddSwaggerGen(a =>
            {
                //获取通用版本信息
                typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
                {
                    a.SwaggerDoc(version, new OpenApiInfo()
                    {
                        Title = $"朝夕测试平台Api文档",
                        Version = version,
                        Description = $"通用版本的CoreApi版本{version}"
                    });
                });
                
                //接口注释文件文章
                var file = Path.Combine(AppContext.BaseDirectory, "ouyang.WebApi.xml");
                a.IncludeXmlComments(file, true);
            });        
        }
   
        /// <summary>
        /// Swagger版本控制
        /// </summary>
        /// <param name="app"></param>
        public static void UseSwaggerExt(this WebApplication app)
        {
            app.UseSwagger();
            //app.UseSwaggerUI();
            app.UseSwaggerUI(c =>
            {
                foreach (var version in typeof(ApiVersions).GetEnumNames())
                {
                    c.SwaggerEndpoint($"https://localhost:7123/swagger/{version}/swagger.json", $"朝夕测试【{version}】版本");
                }
            });
        }
    }
}

枚举 Swagger版本号

namespace ouyang.WebApi.Untility.SwaggerExt
{
    /// <summary>
    /// 枚举,表示不同版本
    /// </summary>
    public enum ApiVersions
    {
        /// <summary>
        /// V1:开发版
        /// </summary>
        V1,
        /// <summary>
        /// V2:测试版
        /// </summary>
        V2,
        /// <summary>
        /// V3:适用版
        /// </summary>
        V3
    }
}

Program.cs中调用

//CustomSwaggerExt设成静态方法this调用,在Program.cs中参数可提前
#region Swagger配置
//builder.Services.AddEndpointsApiExplorer();
//builder.Services.AddSwaggerGen();
//CustomSwaggerExt.AddSwaggerExt(builder.Services);、
builder.Services.AddSwaggerExt();
#endregion

 #region Swagger 版本控制
 //app.UseSwagger();
 //app.UseSwaggerUI();
 //CustomSwaggerExt.UseSwaggerExt(app);
 app.UseSwaggerExt();
#endregion