swagger-2.6.0 记录一个下午的无聊举动

2023-12-21 02:10

本文主要是介绍swagger-2.6.0 记录一个下午的无聊举动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

记录下今天一下午干的一个无聊但是收获还挺大的事情。
今天随意看了下项目中用到的swagger ui功能。 希望对他有点更深的了解。于是有了今天干了这些无聊的事情。
首先,springBoot集成swagger ui。
这个很简单。 三步就行了。这个也不是今天的重点,随便看看。
1、pom.xml中添加依赖

io.springfox
springfox-swagger2
2.6.0


io.springfox
springfox-swagger-ui
2.6.0

2、增加配置的Bean
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage(“com.myapp”))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(“Spring Boot中使用Swagger2构建RESTful APIs”)
.description(“myapp”)
.termsOfServiceUrl(“http://www.myapp.com/“)
.contact(“roykingw”)
.version(“1.0”)
.build();
}
}
3、然后就可以在controller里面添加注释
@ApiOperation(value = “测试接口”, notes = “增加实体接口”)
@RequestMapping(value = “/addObject”, method = RequestMethod.POST)
public Object addObject(@RequestBody String requestMessage, HttpServletRequest request) {
。。。。。
}
这之类的。然后启动应用就能访问 swagger-ui.html看到生成出来的接口报文了。

然后开始了今天一天的时间挥霍。
随意在百度上搜索了一下关于swagger ui的消息,后来确定下了两个关注的问题:
1、swagger-ui 支持多语言版本, 但是默认生成的全都是英文的。于是也就冒出了第二个想法,怎么把他的多语言功能用上。
2、swagger-ui页面实际上是调用几个swagger的rest接口最后组成的页面;
比如 可以访问 /v2/api-docs 获取接口配置信息。
访问 /swagger-resources/configuration/ui 获取页面UI配置信息。
于是就冒出了第一个想法, 这个UI配置信息,既然是配置化的,那要怎么去干预配置呢?

然后从第一个问题开始。
一开始,信心十足,觉得随意度娘一会就能解决。 搜了几个小时,结果相当失望。度娘上一大堆抄来抄去的文章,大都只涉及到怎么把swagger ui用上。然后就没事了。稍微深入一点点的也就说到/v2/api-docs路径地址能进行配置。 然而我的这个小问题,还真真的找不到答案。于是决定自己来。
首先,页面既然能访问,肯定是有html的。在哪里呢?当然还是从jar包入手。新建了一个工程,只引入了swagger ui的依赖。然后去maven依赖库里一个一个jar包去找。 找了一会,很快就发现了目标。

这里写图片描述

这不就是访问的压面吗。 既然地方找到了,那后面的事情就很容易了。
打开页面,html js一个个的看。 看了会,只有一个感觉,这代码看着真的是舒服。然而,字体翻译的地方呢? 没找到啊。但是结合页面,发现了一点,swagger-ui页面上的多语言翻译是怎么做到的?就是把所有要翻译的字符放到带有 data-sw-translate 属性的div 里。
这里写图片描述
而是怎么实现翻译的? 还是没有找到。 就在突然没了主意的时候,随意的鼠标一点,点到了lang文件夹,于是,谜底揭开了。
这里写图片描述
原来全在这里面呢。打开一看,translator.js里负责了翻译。而zh-cn.js这些语言的js中负责了translator的多语言学习。一目了然。
到这里,就了解到了目前这个版本的地方。其实所有的翻译就在包里。swagger-ui.html只要增加引入translator.js和zh-ch.js,就可以完成中文化翻译了。
于是,后面的尝试就很简单了。 分析了一下,由于swagger-ui是打在jar包里的, 要去修改,肯定不可能。于是想到最后做个页面,把swaagger-ui.html 页面load进来。但是springfox.js里的baseurl方法又限定了访问的路径,必须是/swagger-ui.html否则会报错。
这里写图片描述
那就干脆自己做个页面好了。把 swagger-ui.html复制出来,把springfox.js换成另外一个js,把这个访问路径改一改,于是,中文就出来了。
这里写图片描述

而有了这个经验,第二个问题就很顺手就找到了。几个jar包随意翻一下,很快找到了目标
这里写图片描述

反编译出来,看结果
这里写图片描述

安全配置 与 UI配置 就在这。只要在swagger2.java里往spring容器里注入这两个Bean,那注入的配置就会覆盖默认的配置。

其实是一个下午的无聊之做。但是确实有很大的收获。
首先,越是好的东西,越不要浅尝辄止,用完就成。深入研究,也不要打算一鼓作气,经常随意的翻一翻,可能就会有意外的收获。而且,度娘很强大,但不要太依赖度娘,也还是要自己动动手才能算好,像今天一下午,其实花费时间最多的也就在度娘上,自己动手,反而进度很快。
其次,找准问题,看代码就不会那么无聊了。因为swagger ui基于注释收集接口信息的方式,项目中已经以用到,虽然封装,应用肯定不一样,但是技术差不多,就没有过多关注,分散注意力。
然后,看看代码如何组织,也是相当有收获。基于注释的开发方式,项目中也有用到,甚至应用场景比这个swagger ui的只有更加复杂。但是,要说代码清晰易懂,组织分明,那就真的看出了差距。

当然,这只是一个开始,真正springfox和swagger的核心东西都还没有接触呢。 以后有时间继续深入吧。

这篇关于swagger-2.6.0 记录一个下午的无聊举动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/518328

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

Swagger在java中的运用及常见问题解决

《Swagger在java中的运用及常见问题解决》Swagger插件是一款深受Java开发者喜爱的工具,它在前后端分离的开发模式下发挥着重要作用,:本文主要介绍Swagger在java中的运用及常... 目录前言1. Swagger 的主要功能1.1 交互式 API 文档1.2 客户端 SDK 生成1.3