当前位置: 首页 > news >正文

Admin.NET源码学习(5:swagger使用浅析)

  直接启动Admin.NET.Web.Entry项目,会弹出swagger登录验证框,虽然采用Furion简化了项目加载过程及配置,但是学习源码过程就比较恼火,很多设置及功能搞不清楚到低是怎么启用的,本文记录学习Admin.NET项目中swagger的设置生效及调用过程的浅显收获。
在这里插入图片描述
  swagger配置放在了Admin.NET.Application项目Configuration下的Swagger.json文件内,与登录相关的设置如下,前者设置swagger页面是否启动登录框,后面两项则用于登录框中获取登录状态及提交登录信息,路由对应的后台服务为Admin.NET.Core.Service的Auth\SysAuthService.cs文件内的SwaggerCheckUrl、SwaggerSubmitUrl函数。

 "LoginInfo": {"Enabled": true, //控制是否显示swagger身份验证登录框"CheckUrl": "/api/swagger/checkUrl","SubmitUrl": "/api/swagger/submitUrl"}

  Admin.NET启动时,在Admin.NET.Web.Core项目的Startup.cs的Configure函数内对swagger进行设置(项目使用的IGeekFan.AspNetCore.Knife4jUI包,详细介绍见参考文献3),可能是在SpecificationDocumentBuilder的静态构造函数中读取的Swagger.json配置文件(没法调试,不确定是否是这里)。

 // 配置Swagger-Knife4UI(路由前缀一致代表独立,不同则代表共存)app.UseKnife4UI(options =>{options.RoutePrefix = "kapi";foreach (var groupInfo in SpecificationDocumentBuilder.GetOpenApiGroups()){options.SwaggerEndpoint("/" + groupInfo.RouteTemplate, groupInfo.Title);}});app.UseInject(string.Empty, options =>{foreach (var groupInfo in SpecificationDocumentBuilder.GetOpenApiGroups()){groupInfo.Description += "<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>";}});

在这里插入图片描述
  SpecificationDocumentBuilder类的私有函数CustomizeIndex内使用了Swagger.json文件的登录设置信息,该函数被另一internal函数BuildUI调用,而后者被同一程序集的IApplicationBuilder扩展函数UseSpecificationDocuments调用(扩展类为SpecificationDocumentApplicationBuilderExtensions),最终被用在了app.UseInject函数内,也即Swagger.json文件内的LoginInfo的Enable属性是在UseInject函数内部生效的。
在这里插入图片描述
在这里插入图片描述
  置于swagger登录页面放在哪里,是不是内置在swagger或者Knife4jUI包内,暂时还没有发现。之前swagger用的都是最基本的功能,后续还得进一步学习swagger的用法。

参考文献:
[1]https://github.com/zuohuaijun/Admin.NET
[2]http://101.43.53.74:5050/introduce/
[3]https://github.com/luoyunchong/IGeekFan.AspNetCore.Knife4jUI

http://www.lryc.cn/news/474647.html

相关文章:

  • 在 openEuler 22.03 服务器上搭建 web 服务教程
  • 如何取消自动配置ipv4地址:步骤详解与实用指南
  • 医院信息化与智能化系统(15)
  • 小红书笔记详情API接口系列(概述到示例案例)
  • 跨境电商平台系统开发
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-玩转ollama-Modelfile文件(二)
  • 链表详解(一)
  • npm入门教程6:npm脚本
  • 用Python脚本执行安卓打包任务
  • 制作安装k8s需要的离线yum源
  • Node学习记录-events
  • Java Collection/Executor DelayedWorkQueue 总结
  • 《TCP/IP网络编程》学习笔记 | Chapter 1:理解网络编程和套接字
  • 服务端监控工具:Nmon使用方法
  • Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)
  • 基础设施即代码(IaC)在Python自动化运维中的应用探讨
  • 浅谈路由器
  • openGauss数据库-头歌实验1-1 初识openGauss
  • QT找不到ffmpeg链接库解决方法
  • 消息队列-Rabbitmq(消息发送,消息接收)
  • 2、顶点着色器之视图矩阵
  • crontab实现2026年开始每个月1号执行一次
  • 计算机网络803-(5)运输层
  • 八 MyBatis中接口代理机制及使用
  • 【解决】Ubuntu18.04 卸载python之后桌面异常且终端无法打开,重启后进入tty1,没有图形化界面
  • OpenEmbedded、yocto和poky是什么关系?
  • 记录页面——一个蛮好看的登录页(uni-app)
  • Android文件选择器[超级轻量级FilePicker测试没有问题][挣扎解决自带文件管理器获取不到绝对地址问题而是返回msf%3A1000038197]
  • 【论文速读】| RED QUEEN: 保护大语言模型免受隐蔽多轮越狱攻击
  • 39.第二阶段x86游戏实战2-HOOK实现主线程调用