springboot系列学习(二十二):swagger这个就是一个工具 ,这个是可以生成项目的开发文档,swagger界面的详解和配置类的详解(一)

    科技2022-07-14  126

    主要利用这个工具生成开发文档,让前端后端工程师使用这个文档开发代码,前后台耦合性变小。

    现在前后端开发出现的问题

    前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发

    解决方法:Swagger

    首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险 号称世界上最流行的API框架

    Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新

    直接运行,在线测试API

    支持多种语言 (如:Java,PHP等)

    官网:https://swagger.io/

    也就是我们可以使用swagger,自动的生成项目的api接口

    springboot项目集成swagger的步骤:

    1 创建一个springboot的项目 2 导入swagger的依赖 得导入两个依赖,一个是核心依赖,一个是界面依赖,swagger是有自己单独的界面的。导入这个依赖之后,我们就可以看见了。 3 配置swagger

    4 启动项目 5 访问测试 :http://localhost:8080/swagger-ui.html ,可以看到swagger的界面;

    出现了以上的界面,那么我们的springboot项目已经集成了swagger。现在我们要在项目里面使用这个,那么就需要开始配置

    之前我们访问的swagger的页面,看见都是英文的,现在我们想要改为自己的,那么我们就可以在配置类里面改了之后,重新访问就可以看见改之后的页面。那么配置类里面是如何改呢? 修改默认的配置信息

    @Configuration //配置类 @EnableSwagger2// 开启Swagger2的自动配置 public class SwaggerConfig { @Bean //配置docket以配置Swagger具体参数 public Docket docket() { // apiInfo()这个方法里面就是修改页面的东西 return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()); } //配置文档信息 private ApiInfo apiInfo() { //作者信息 Contact contact = new Contact("联系人名字", "http://xxx.xxx.com/联系人访问链接", "联系人邮箱"); return new ApiInfo( "Swagger学习", // 标题 "学习演示如何配置Swagger", // 描述 "v1.0", // 版本 "http://terms.service.url/组织链接", // 组织链接 contact, // 联系人信息 "Apach 2.0 许可", // 许可 "许可链接", // 许可连接 new ArrayList<>()// 扩展 ); } }

    以上是默认的配置写完了,现在开始配置我们写的接口

    也就是我们写的接口,controller层接口路径,是如何显示在这个swagger页面的

    或者这样说,如何让swagger扫描指定的接口

    现在后端的controller层写的东西是这 那么项目一启动,我们在swagger页面就可以看见这个

    现在在controller层加一个方法 重新启动项目,看swagger界面

    以上是多了一个接口,但是现在 的问题是,我们在后端不管写几个接口,在swagger都会显示,这个是不好的,我们现在相的是,可以控制显示的接口,想让哪个接口显示那么就让哪个接口显示,这个怎么做,这个就又要到swagger里面配置了,具体如何配置呢?

    配置扫描接口

    @Bean //配置docket以配置Swagger具体参数 public Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口 .apis(RequestHandlerSelectors.basePackage("com.controller")) .build(); }

    以上配置就是只是扫描这个包下的所有的东西,其他的东西不要,那么我们看见页面就变为了

    连之前的error,model 这些都没有了。只有我们配置的东西

    RequestHandlerSelectors.basePackage("com.controller") 这个basePackage()方法的意思是扫描指定的包。

    其实还有这些多的方法

    以上的配置是扫描包,但是现在我想要扫描一个类里面的一个方法,这个类里面有很多的方法

    配置Swagger开关

    1、通过enable()方法配置是否启用swagger,如果是false,swagger将不能在浏览器中访问了

    2 我们希望上线的时候不使用这个swagger,开发的时候使用,这个咋处理

    yml文件是一般项目里面有两个,一个是测试yml,一个是上线的yml,那么我们就需要在swagger配置类里面配置了,看看现在使用的是什么yml,之后根据这个再决定使用不使用swagger这个工具。 也就是在swagger配置类里面获取当前的生产环境

    现在有两个环境

    配置API分组

    什么是api分组,我们先看swagger界面,最最有上面有一个这个。

    下拉框里面有选项,但是默认的只有一个,这个默认的default在源码里面的位置是 docker类里面 所以我们只需要改这个属性的值就可以了

    如何配置多个分组?配置多个分组只需要配置多个docket即可:

    Processed: 0.011, SQL: 8