主要利用这个工具生成开发文档,让前端后端工程师使用这个文档开发代码,前后台耦合性变小。
前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发
首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险 号称世界上最流行的API框架
Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新
直接运行,在线测试API
支持多种语言 (如:Java,PHP等)
官网:https://swagger.io/
1 创建一个springboot的项目 2 导入swagger的依赖
得导入两个依赖,一个是核心依赖,一个是界面依赖,swagger是有自己单独的界面的。导入这个依赖之后,我们就可以看见了。 3 配置swagger
4 启动项目 5 访问测试 :http://localhost:8080/swagger-ui.html ,可以看到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页面就可以看见这个
现在在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()方法的意思是扫描指定的包。
其实还有这些多的方法
以上的配置是扫描包,但是现在我想要扫描一个类里面的一个方法,这个类里面有很多的方法
1、通过enable()方法配置是否启用swagger,如果是false,swagger将不能在浏览器中访问了
2 我们希望上线的时候不使用这个swagger,开发的时候使用,这个咋处理
yml文件是一般项目里面有两个,一个是测试yml,一个是上线的yml,那么我们就需要在swagger配置类里面配置了,看看现在使用的是什么yml,之后根据这个再决定使用不使用swagger这个工具。 也就是在swagger配置类里面获取当前的生产环境
现在有两个环境
什么是api分组,我们先看swagger界面,最最有上面有一个这个。
下拉框里面有选项,但是默认的只有一个,这个默认的default在源码里面的位置是 docker类里面
所以我们只需要改这个属性的值就可以了
如何配置多个分组?配置多个分组只需要配置多个docket即可: