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

相关文章

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓