C# .net core(.net 6) 注册使用Swagger 封装扩展静态类方法

注:Swagger配置参考:.net 6 配置使用swagger

C#扩展静态类方法实现参考:https://www.cnblogs.com/spirit-ling/p/14537735.html

1、创建SwaggerExtension.cs 类

项目下创建Utility文件夹(用于存放扩展类) -> Utility文件夹下创建Swagger文件夹(用于Swagger相关类)->Swagger文件夹下创建 SwaggerExtension.cs

 2、创建Swagger注册静态类方法

 

 

        /// <summary>
        /// Swagger注册方法
        /// </summary>
        /// <param name="builder"></param>
        public static void AddSwaggerGenExt(this WebApplicationBuilder builder)
        {
            //注册Swagger
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen(c =>
            {
                #region 配置Swagger
                c.SwaggerDoc("V1.0", new OpenApiInfo
                {
                    Title = "V1.0:接口文档",
                    Description = $"API版本V1.0",
                    Contact = new OpenApiContact
                    {
                        Name = "百度链接",
                        Email = string.Empty,
                        Url = new Uri("https://www.baidu.com")
                    }
                });
                #endregion

                #region 配置展示注释
                {
                    var path = Path.Combine(AppContext.BaseDirectory, "Demo02.xml");  // xml文档绝对路径
                    c.IncludeXmlComments(path, true); // true : 显示控制器层注释
                    c.OrderActionsBy(o => o.RelativePath); // 对action的名称进行排序,如果有多个,就可以看见效果了。

                }
                #endregion
            });
        }

3、创建Swagger使用静态类方法

 

 

 /// <summary>
        /// Swagger使用方法
        /// </summary>
        /// <param name="app"></param>
        public static void UseSwaggerExt(this WebApplication app)
        {
            #region 使用Swagger
            //使用Swagger
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint($"/swagger/V1.0/swagger.json", $"Demo01 V1.0");
            });
            #endregion
        }

4、在Program.cs使用扩展静态类方法注册Swagger、使用swagger

 

 

//调用封装后的注册Swagger
builder.AddSwaggerGenExt();
    //封装后的使用Swagger
    app.UseSwaggerExt();

 5、Program.cs

using Microsoft.OpenApi.Models;
using System;
using Demo02.Utility.Swagger;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle

//调用封装后的注册Swagger
builder.AddSwaggerGenExt();



var app = builder.Build();

// Configure the HTTP request pipeline.
//测试环境启动
if (app.Environment.IsDevelopment())
{
    //封装后的使用Swagger
    app.UseSwaggerExt();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

6、SwaggerExtension.cs

using Microsoft.OpenApi.Models;

namespace Demo02.Utility.Swagger
{
    /// <summary>
    /// Swagger
    /// </summary>
    public static class SwaggerExtension
    {
        /// <summary>
        /// Swagger注册方法
        /// </summary>
        /// <param name="builder"></param>
        public static void AddSwaggerGenExt(this WebApplicationBuilder builder)
        {
            //注册Swagger
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen(c =>
            {
                #region 配置Swagger
                c.SwaggerDoc("V1.0", new OpenApiInfo
                {
                    Title = "V1.0:接口文档",
                    Description = $"API版本V1.0",
                    Contact = new OpenApiContact
                    {
                        Name = "百度链接",
                        Email = string.Empty,
                        Url = new Uri("https://www.baidu.com")
                    }
                });
                #endregion

                #region 配置展示注释
                {
                    var path = Path.Combine(AppContext.BaseDirectory, "Demo02.xml");  // xml文档绝对路径
                    c.IncludeXmlComments(path, true); // true : 显示控制器层注释
                    c.OrderActionsBy(o => o.RelativePath); // 对action的名称进行排序,如果有多个,就可以看见效果了。

                }
                #endregion
            });
        }

        /// <summary>
        /// Swagger使用方法
        /// </summary>
        /// <param name="app"></param>
        public static void UseSwaggerExt(this WebApplication app)
        {
            #region 使用Swagger
            //使用Swagger
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint($"/swagger/V1.0/swagger.json", $"Demo01 V1.0");
            });
            #endregion
        }
    }
}

 

posted @ 2022-12-29 11:07  燕钰达  阅读(471)  评论(0编辑  收藏  举报