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

news/2024/9/20 7:02:40/文章来源: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){//添加swaggerservices.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,谢谢。

 

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/796079.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寻址方式

在嵌入式系统设计课程中,寻址方式(Addressing Modes)是指处理器或控制器在执行指令时如何访问操作数或指令中的数据。寻址方式分为指令寻址和数据寻址 1. 指令寻址(Instruction Addressing) 指令寻址是指寻找下一条将要执行的指令地址。指令寻址包括顺序寻址、跳跃寻址 *顺…

PbootCMS标签大全,PbootCMS模版如何调用tag标签

PBootCMS提供了丰富的模板标签来方便地调用各种功能。下面详细介绍PBootCMS的常用标签及其用法,并给出具体的示例。 PBootCMS标签大全 1. 基础标签{pboot:site}用途:获取站点信息。 示例:html{pboot:site name="title"} 网站标题 {/pboot:site}{pboot:page}用途:…

2024 sheep

类似最小生成树,对边排序依次加上,但是数据大,要进行离线处理,存起来,将比他小的边加上,判断连通用并查集(路径压缩,按秩合并)。 唐完的我在赛时没写按秩,而且while没写终止条件(唐老鸭)。 先按秩后合并,测评机有点玄学但确实要这样。 初版: #include<bits/st…

PbootCMS如何输出当前页面的完整url

在PBootCMS中,输出当前页面的完整URL可以通过模板标签来实现。以下是具体的步骤和模板标签的使用方法: 输出当前页面的完整URL 可以使用 {pboot:httpurl} 标签来获取当前页面的完整URL。这个标签会自适应地获取当前访问的网址,可以用于需要使用网站路径前缀的情况。扫码添加…

pbootcms后台“登录失败:表单提交校验失败,请刷新后重试”

当遇到PBootCMS后台登录时提示“登录失败:表单提交校验失败,请刷新后重试”的问题时,可以尝试以下几个解决方法:刷新页面:首先按照提示刷新页面,看看是否能够解决问题。 清理浏览器缓存:有时候浏览器缓存可能导致表单提交出现问题,尝试清除浏览器缓存后再试。 删除运行…

PbootCMS后台登录验证码看不清怎么回事?

如果你发现PBootCMS后台登录时的验证码看不清楚,这可能是由于以下几个原因造成的:验证码背景与文字颜色相近:验证码的背景色和文字颜色可能过于接近,导致对比度不足,使得验证码难以辨认。 PHP版本不兼容:某些PHP版本可能与生成验证码的脚本不兼容,导致验证码显示异常。解…

jQuery高级选择符与遍历

1.HTML代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><scrip…

uniapp使用路由名称跳转

由于web端和app公用一套菜单,而两个项目的路径是不同的,为解决这个问题,封装了一套使用路由名称作为跳转路由的方法 1.在pages.json文件里pages对应的页面配置里添加 routeName 字段(自定义),我做的app里面的菜单是后台获取的,所以这里的value值对应的是后台返回的页面路…

MyBatis-Plus动态表名

MyBatis-Plus动态表名 一、早期方案 1.1 MyBatis-Plus版本 1、添加MyBatis-Plus依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version> </dependency&g…

PbootCMS附件上传失败报错UNKNOW: Code: 8192; Desc: stripos()

在PBootCMS中遇到附件上传失败的报错 UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior,这通常是因为PHP版本升级后某些函数的行为发生了变化。具体来说…

Android Studio单独运行Java程序

见图:添加代码如下: <option name="delegatedBuild" value="false" />

西门子WinCC开发笔记(一):winCC西门子组态软件介绍、安装

前言WinCC,非常经典的组态软件,西门子触摸屏。  西门子PLC的软件还是弄得比较多,WinCC是西门子触摸屏的编程和仿真软件,配套西门子的触摸屏,可以组态编程、仿真然后下载到HMI人机触摸屏上,作为组态软件来说,是非常值得了解、熟悉和学习的。 相关博客《案例分享:Qt激光…