ETJava Beta | Java    注册   登录
  • 搜索:
  • .net core8 使用Swagger(附当前源码)

    发表于      阅读(1)     博客类别:Crawler     转自:https://www.cnblogs.com/cyzf/p/18410483
    如有侵权 请联系我们删除  (页面底部联系我们)  

    说明

       该文章是属于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中间件

       做好以上步骤,我们的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,谢谢。

     

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

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