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

相关文章

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

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J