大家好,我是空灵。Springboot Old Bird系列的文章写了两篇文章。每个阅读响应还不错。果然,每个人仍然对Springboot感兴趣。TODAY我们将旧鸟类系列的第三篇文章:集成的Swagger接口文档和Swagger的高级功能。该文章中涉及的代码已上传到Github。我希望它可以最终应用于您的实际项目。当然,如果还有其他需要添加到内容中,则可以直接留言来告诉我。根据情况,我会将其添加到您。
好吧,让我们抽一点八卦,首先让我们看看为什么要使用Swagger?
作为程序员,我们最讨厌两件事:1。其他人不写评论2。自己写评论。
作为接口开发人员,我们也讨厌两件事:1。其他人不编写接口文档,并且文档未随时更新。2。您需要自己编写接口文档,并且需要及时更新它。
人们认为,无论是前端还是后端开发,它或多或少都受到接口文档的折磨。前端经常抱怨后端给出的接口文档与实际情况不一致。- END还认为编写和维护接口文档将需要大量精力,而且更新通常为时已晚。
随着Springboot和SpringCloud等微服务的普及,每个项目都有数百和数千个接口调用。这次,在这个时间上,我们迫切需要一个工具,该工具可以自动生成接口文档并自动更新文档。
Swagger提供了一种维护API文档的新方法,具有4个优势:
现在,我们知道Swagger的角色,然后将其整合到我们的项目中。
集成的招摇很简单,只需要三个步骤。
2.添加Swagger配置类
接口文档是由Surface自动生成的,并使用注释类别生成。
接口文档需要通过注释标记生成,并且接口名称由注释标记。
同时,我们添加相应的注释
通过标记这是一个参数实体,通过标记字段描述。
三个步骤,我们的项目集成了Swagger接口文档,并迅速启动服务并访问体验。
好吧,有一个小问题,但不要惊慌。
此问题的原因是,我们添加了一个统一的处理返回值/响应主体,将返回值引起一层的摇动值,并且无法解释UI页面。您可以观察Swagger返回的JSON数据。
由于我们知道问题的原因,因此很容易解决。我们只需要在响应bodyAdvice处理类中更改自己的项目界面即可。
通过添加basepackage属性以限制均匀返回值的范围,这不会影响招摇。
重新启动服务器以再次访问Swagger接口地址,您可以看到接口文档页面。
Swagger 2.9.2有一个错误,也就是说,当我们的参数实体具有INT类型参数时,当Swagger接口页面打开时,后端将始终提示:
有两种解决方案:
尽管在集成的宣传过程中将存在两个小问题,但我们可以享受解决方案后给我们带来的便利。
Swagger的本地UI有些丑陋,我们可以在Swagger的增强工具的帮助下进行优化。
由于已带来了Knife4J的依赖项,因此我们可以删除上面手动添加的两个依赖项。
在上述两个步骤之后,我们完成了招摇的美化,您可以通过浏览器访问看到效果。
在这里见到同学,我一定会考虑的,就是这样吗?这是旧鸟的方法吗?这与我们的新手没有什么不同
不用担心,让我们先看一下效果。
首先,我们定义了两个接口,一个新的,一个编辑器
请注意,此处使用相同的实体接收前端参数,但是我们在参数验证中使用数据包,然后我们打开Kife4J页面来观察两者的接口文档如何不同。
新添加:
编辑:
从上面可以看出,尽管实体用于接受参数,但分组不同时显示在前端的参数。这是招摇的组函数。
当然,本地宣传不支持分组功能,我们需要扩展Swagger。我已将代码上传到GitHub。由于代码的数量更多,因此不会在此处显示。您可以自己检查。
引入扩展类后,需要将相应的BEAN注入Swagger Configuration类。
1.在bean对象的属性中配置以下注释
添加新场景后,苹果为空,不需要传递该值;修改场景时,appid不能被空并且需要传递。
2.在接口参数时将组规则添加到验证中
当前接口将验证默认组的bean属性,同时验证共同属性。
宣传集成相对简单。尽管集成过程中有几个小问题,但很容易解决。像以前的参数验证文章一样,许多学生在遇到这样的分组场景时通常会选择创建多个物理类。尽管它也可以解决问题,但总是有点尴尬。
不幸的是,本文中的Swagger的群体扩张仅支持Swagger2。至于新版本的Swagger3,它不太支持。如果有些同学已经扩展,欢迎提及PR。
最后,我是一个朦胧的果酱,是一名建筑师,写了代码,是一个架构的程序员,期待着您的转发和关注,当然,您可以添加我的个人微信Jianzh5,一起谈论技术!
旧鸟类系列文章github地址:https://github.com/jianzh5/cloud-blog/