目录
swagger
swagger的作用
swagger的使用
一.导入依赖
二.创建swagger配置类,交给SpringIoC容器管理
三.使用swagger依赖的注解来给接口层(controller)的各种方法进行注释
@Api
@ApiOperation
@ ApiImplicitParam
@ApiModel
@ApiModelProperty
四:访问ui页面
Knife4j
Knife4j的作用
knife4j的使用
一:导入依赖
二:在swagger配置类中开启knife4j
三:访问knife4j
Yapi
Yapi的下载
一:在虚拟机中docker拉取mongoDB并启动
二:拉取yapi镜像包
三:自定义config.json
四:启动yapi
五:访问yapi
使用yapi同步本地主机的swagger
总结
swagger
swagger的作用
- 使得前后端分离开发更加方便,有利于团队协作;
- 接口文档在线自动生成,降低后端开发人员编写接口文档的负担;
- 接口功能测试;
- 使用Swagger只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等;
swagger的使用
一.导入依赖
<!-- swagger依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<!-- swagger ui支持包-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
二.创建swagger配置类,交给SpringIoC容器管理
package com.hhh.stock.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket buildDocket() {
//构建在线API概要对象
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(buildApiInfo())
.select()
// 要扫描的API(Controller)基础包
.apis(RequestHandlerSelectors.basePackage("com.hhh.stock.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo buildApiInfo() {
//网站联系方式
Contact contact = new Contact("hhh程序员","https://www.hhh.com/","153@qq.com");
return new ApiInfoBuilder()
.title("这是一个项目接口API文档")//文档标题
.description("这是一个方便前后端开发人员快速了解开发接口需求的在线接口API文档")//文档描述信息
.contact(contact)//站点联系人相关信息
.version("1.0.0")//文档版本
.build();
}
}
三.使用swagger依赖的注解来给接口层(controller)的各种方法进行注释
@Api
使用@Api接口的tags属性对该接口进行描述
@RestController
@RequestMapping("/api")
@Api(tags = "用户操作接口")
public class UserController {
}
@ApiOperation
使用@ApiOPeration注解的value属性对方法进行描述
@ ApiImplicitParam
paramType 查询参数类型 path 以地址的形式(rest风格)提交数据 query 直接跟参数完成自动映射赋值(/add/user?name=zhangsan) body 以流的形式提交 仅支持POST header 参数在request headers 里边提交 form 以form表单的形式提交 仅支持POST
dataType:方法属性的类型
name:参数名字
value:对该参数的描述
required:true指该参数必须填写
@GetMapping("/user/{userName}")
@ApiOperation(value = "根据用户名来查询用户的基本信息")
@ApiImplicitParams(
@ApiImplicitParam(paramType = "path",dataType = "string",name="userName",value = "用户名",required=true)
)
public SysUser getUserByUserName(@PathVariable("userName")String username){
return userService.findByUserName(username);
}
@PostMapping("/login")
@ApiOperation(value = "登录功能")
public R<LoginRespVo> login(@RequestBody LoginReqVo loginReqVo){//接收前端发送的json数据并封装到LoginReqVo类对象
return userService.login(loginReqVo);
}
@ApiModel
使用description对该类进行描述
@ApiModelProperty
使用value属性对类的成员变量属性进行描述
@Data
@ApiModel(description = "返回用户的信息")
public class SysUser implements Serializable {
/**
* 用户id
*/
@ApiModelProperty(value = "用户主键id")
private Long id;
/**
* 账户
*/
@ApiModelProperty(value = "用户名")
private String username;
/**
* 用户密码密文
*/
@ApiModelProperty(value = "用户的密文密码")
private String password;
}
四:访问ui页面
http://localhost:8091/swagger-ui.html
Knife4j
Knife4j的作用
该UI增强包主要包括两大核心功能:文档说明 和 在线调试
- 文档说明:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,使用swagger-bootstrap-ui能根据该文档说明,对该接口的使用情况一目了然。
- 在线调试:提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数可返回接口响应内容、headers、Curl请求命令实例、响应时间、响应状态码等信息,帮助开发者在线调试,而不必通过其他测试工具测试接口是否正确,简介、强大。
- 个性化配置:通过个性化ui配置项,可自定义UI的相关显示信息
- 离线文档:根据标准规范,生成的在线markdown离线文档,开发者可以进行拷贝生成markdown接口文档,通过其他第三方markdown转换工具转换成html或pdf,这样也可以放弃swagger2markdown组件
- 接口排序:自1.8.5后,ui支持了接口排序功能,例如一个注册功能主要包含了多个步骤,可以根据swagger-bootstrap-ui提供的接口排序规则实现接口的排序,step化接口操作,方便其他开发者进行接口对接
knife4j的使用
一:导入依赖
<!--knife4j的依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
<!--支持接口参数校验处理-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
二:在swagger配置类中开启knife4j
@Configuration
@EnableSwagger2
@EnableKnife4j//knife4j对swagger进行增强
@Import(BeanValidatorPluginsConfiguration.class)//导入接口参数校验处理的配置类
public class SwaggerConfiguration {
@Bean
public Docket buildDocket() {
//构建在线API概要对象
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(buildApiInfo())
.select()
// 要扫描的API(Controller)基础包
.apis(RequestHandlerSelectors.basePackage("com.hhh.stock.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo buildApiInfo() {
//网站联系方式
Contact contact = new Contact("hhh程序员","https://www.hhh.com/","153@qq.com");
return new ApiInfoBuilder()
.title("这是一个项目接口API文档")//文档标题
.description("这是一个方便前后端开发人员快速了解开发接口需求的在线接口API文档")//文档描述信息
.contact(contact)//站点联系人相关信息
.version("1.0.0")//文档版本
.build();
}
}
三:访问knife4j
http://lcoalhost:8091/doc.html
Yapi
Yapi的下载
一:在虚拟机中docker拉取mongoDB并启动
# 拉取mongo镜像
docker pull mongo
# 安装mongo数据库服务
# 创建存储卷
docker volume create mongo-data
# 启动 MongoDB
docker run -d \
--name mongo-yapi \
-v mongo-data:/data/db \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=anoyi \
-e MONGO_INITDB_ROOT_PASSWORD=anoyi.com \
mongo
二:拉取yapi镜像包
docker pull registry.cn-hangzhou.aliyuncs.com/anoyi/yapi
三:自定义config.json
mkdir /usr/local/yapi
touch config.json
config.json内容
{ "port": "3000", "adminAccount": "admin@anoyi.com", "timeout":120000, "db": { "servername": "mongo", "DATABASE": "yapi", "port": 27017, "user": "anoyi", "pass": "anoyi.com", "authSource": "admin" } }
四:启动yapi
# 初始化管理员账户和密码
docker run -it --rm \
--link mongo-yapi:mongo \
--entrypoint npm \
--workdir /yapi/vendors \
-v $PWD/config.json:/yapi/config.json \
registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
run install-server
docker run -d \
--name yapi \
--link mongo-yapi:mongo \
--workdir /yapi/vendors \
-p 3000:3000 \
-v $PWD/config.json:/yapi/config.json \
registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
server/app.js
五:访问yapi
访问: http://192.168.230.100:3000
登录账号:admin@anoyi.com
密码:ymfe.org
注意:访问Yapi时必须启动mongoDB
使用yapi同步本地主机的swagger
注意项目swagger.json地址不能写localhost,因为yapi是安装在虚拟机上的,所以要写本地主机的ip地址,使用ipconfig查看,要注意这个地址要让虚拟机可以ping通
总结
swagger
特点:生成api文档
缺点:适用于个人,ui界面不好看
knife4j是swagger的增强版(ui好看)
Yapi是公共的接口文档,web个人