.net core8 使用Swagger(附当前源码)

说明

该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。

该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。

说明:OverallAuth2.0 是一个简单、易懂、功能强大的权限+可视化流程管理系统。

有兴趣的朋友,请关注我吧(*^▽^*)。

使用前提

1、Visual Studio使用2022版本

搭建项目

OverallAuth2.0依然和OverallAuth1.0一样,采用前后端分离模式,所以搭建后端,我们选择 .net core web api(如下图)

选择项目模板后,我们点击【下一步】

选择.net 8.0(最新长期支持版本),随后创建项目

默认项目结构如下图

直接运行,查看默认界面

运行起来可以看到,系统默认的swagger界面非常简介,也少了很多信息比如:

1、系统说明、版本、作者等。

2、接口的描述、参数等信息。

3、接口的分类等。

优化Swagger

上面说道,系统默认的接口文档是非常简洁的,接下来我们在系统中,这样做,让swagger看起来更优美和专业。

在项目下新增一个文件件PlugInUnit,然后再该文件夹下新建一个类SwaggerPlugInUnit**。**

建好SwaggerPlugInUnit后,在webapi同级建一个类库Utility,用于存放系统的辅助工具等,然后再该类库下建一个Enum文件夹,并新建ModeuleGroupEnum该枚举。

如图:

建好文件后,在ModeuleGroupEnum文件中写一个枚举SysMenu,并保存。

复制代码
/// <summary>
/// 模块分组
/// </summary>
public enum ModeuleGroupEnum
{
    SysMenu = 1,
}

随后在SwaggerPlugInUnit中编写一个方法,具体代码如下

复制代码
/// <summary>
/// swagger插件
/// </summary>
public static class SwaggerPlugInUnit
{
    /// <summary>
    /// 初始化Swagger
    /// </summary>
    /// <param name="services"></param>
    public static void InitSwagger(this IServiceCollection services)
    {
        //添加swagger
        services.AddSwaggerGen(optinos =>
        {
            typeof(ModeuleGroupEnum).GetEnumNames().ToList().ForEach(version =>
            {
                optinos.SwaggerDoc(version, new OpenApiInfo()
                {
                    Title = "权限管理系统",
                    Version = "V2.0",
                    Description = "求关注,求一键三连",
                    Contact = new OpenApiContact { Name = "微信公众号作者:不只是码农   b站作者:我不是码农呢", Url = new Uri("http://www.baidu.com") }
                });

            });

            //反射获取接口及方法描述
            var xmlFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
            optinos.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFileName), true);

        });
    }

    /// <summary>
    /// swagger加入路由和管道
    /// </summary>
    /// <param name="app"></param>
    public static void InitSwagger(this WebApplication app)
    {
        app.UseSwagger();
        app.UseSwaggerUI(options =>
        {
            typeof(ModeuleGroupEnum).GetEnumNames().ToList().ForEach(versoin =>
            {
                options.SwaggerEndpoint($"/swagger/{versoin}/swagger.json", $"接口分类{versoin}");
            });
        });
    }
}
复制代码
然后再program中使用自定义swagger中间件
![](https://img2024.cnblogs.com/blog/1158526/202409/1158526-20240912161439487-2111244537.png)

做好以上步骤,我们的swagger基本算是搭建好了,只需要在控制器上方,添加路由和分组。

复制代码
 /// <summary>
 /// 系统模块
 /// </summary>
 [ApiController]
 [Route("api/[controller]/[action]")]
 [ApiExplorerSettings(GroupName = nameof(ModeuleGroupEnum.SysMenu))]

做完以上这些,我们对swagger就算优化完成,只需要运行系统,就可以查看效果

**注意:**必须生成接口的xml文件,不然会报错。

好了,以上就是搭建WebApi+优化Swagger的全部过程,你快来试试吧

如果对你有帮助,请关注我吧(*^▽^*)。

源代码地址:https://gitee.com/yangguangchenjie/overall-auth2.0-web-api

帮我Star,谢谢。

有兴趣的朋友,请关注我吧(*^▽^*)。

关注我:一个全栈多端的宝藏博主,定时分享技术文章,不定时分享开源项目。关注我,带你认识不一样的程序世界

相关推荐
叫我阿柒啊9 分钟前
从Java全栈到前端框架:一位程序员的实战之路
java·spring boot·微服务·消息队列·vue3·前端开发·后端开发
叫我阿柒啊9 小时前
从Java全栈到云原生:一场技术深度对话
java·spring boot·docker·微服务·typescript·消息队列·vue3
叫我阿柒啊9 小时前
从Java全栈到Vue3实战:一次真实面试的深度复盘
java·spring boot·微服务·vue3·响应式编程·前后端分离·restful api
叫我阿柒啊1 天前
从Java全栈到前端框架:一次真实的面试对话
java·spring boot·微服务·前端框架·vue3·全栈开发
叫我阿柒啊1 天前
Java全栈开发工程师面试实战:从基础到微服务的完整技术演进
java·spring boot·微服务·前端框架·vue3·全栈开发·面试技巧
Lsx-codeShare2 天前
前端数据可视化:基于Vue3封装 ECharts 的最佳实践
前端·javascript·echarts·vue3·数据可视化
叫我阿柒啊2 天前
从全栈开发到微服务架构:一位Java工程师的实战经验分享
java·ci/cd·kafka·mybatis·vue3·springboot·fullstack
叫我阿柒啊2 天前
Java全栈工程师的面试实战:从基础到复杂问题的完整解析
java·数据库·spring boot·微服务·vue3·测试·全栈开发
叫我阿柒啊3 天前
从Java全栈到前端框架:一场真实面试的深度技术探索
java·redis·微服务·typescript·vue3·springboot·jwt
叫我阿柒啊3 天前
从Java全栈到前端框架:一场真实的技术面试实录
java·spring boot·redis·typescript·vue3·jwt·前后端分离