Swagger简介
前后端分离
Vue + SpringBoot
后端时代:前端只用管理静态页面;html==> 后端。模板引擎 JSP =>后端是主力
前后端分离式时代:
丶后端:后端控制层,服务层,数据访问层【后端团队】
丶前端:前端控制层,视图层【前段团队】
、伪造后端数据,json。已经存在了,不需要后端,前段工程依旧能够跑起来
丶前后端 如何交互?=====> API
、前段相对独立,松耦合;
。前段甚至可以部署在不同的服务器上;
问题:
前后端集成联调,前端人员和后端人员无法做到“及时协商,今早解决”,最终导致问题集中爆发;
解决方案:
首先指定schema【计划的提纲】,实时更新API,降低集成的风险;
早些年:指定word计划文档;
前后端分离:
前后端测试后端接口:postman
后端提供接口:需要实时更新最新的消息及改动!
Swagger
号称世界上最流行的Api框架;
RestFul Api 文档在线自动生成工具=>==Api文档与API定义同步更新==
直接运行,可以在线测试API接口;
支持多种语言:(Java,Php....)
官方网站:https://swagger.io/
在项目使用Swagger需要 springbox;
SpringBoot 集成Swagger
1.首先建一个 SPringBoot = web项目
2.导入依赖
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
3.编写一个HELLO工程
4.配置Swagger ====》Config
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {
}
运行测试 http://localhost:8080/swagger-ui.html#/
配置Swagger信息
//配置swagger信息
private ApiInfo apiInfo(){
Contact contact = new Contact("spwu","https://blog.csdn.net/weixin_44821177","624794851@qq.com");
return new ApiInfo("超强的SwaggerAPI文档",
"即使瑞琪再调皮,也是个好孩子",
"v1.0",
"https://blog.csdn.net/weixin_44821177",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
Swagger配置扫描接口
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(true)
.select()
//RequestHandlerSelectors,配置要扫描接口的方式
//basePackage:指定要扫描的包
//any():扫描全部
//none():不扫描
//withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象
//withMethodAnnotation:扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.wu.demo.controller"))
//paths()。过滤什么路径
// .paths(PathSelectors.ant("/wu/**"))
.build();
}
测试一下:
实现分组;
.groupName(“超强的小qi是”)
如何配置多个分组;多个Docket实例即可
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("小");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("可");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("爱");
}
总结:
- 我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息
- 接口文档实时更新
- 可以在线测试
Swagger是一个优秀的工具,几乎所有大公司都有使用它
【注意点】在正式发布的时候,关闭Swagger!!!出于安全考虑。而且节省运行的内存;