什么是接口文档?
写后台接口信息的文档,每条接口包括:
- 请求参数
- 响应参数
- 错误码
- 接口地址
- 接口名称
- 请求类型
- 请求格式
- 备注
比如下图:
为什么需要接口文档?它的作用
- 避免口头交流,事后就忘,可以反复查阅,便于维护。
- 便于前端和后端开发对接,便于后端调试,甚至某些开放接口开放给第三方的时候,更加方便,专业
那么应该如何做接口文档呢?
- 手写。(语雀,md)
- 根据代码自动生成接口文档。(Swagger,Postman)(apifox、apipost、eolink)
本期呢,我们主要讲解Swagger+ Knife4j。
Knife4j
官网地址:https://doc.xiaominfo.com/
点击实战指南,spring整合
接下来就是按照官方文档傻瓜式配置。
第一步:在maven项目的pom.xml中引入Knife4j的依赖包,代码如下:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.9</version>
</dependency>
第二步:创建Swagger配置依赖,代码如下:
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
//.title("swagger-bootstrap-ui-demo RESTful APIs")
.description("# swagger-bootstrap-ui-demo RESTful APIs")
.termsOfServiceUrl("http://www.xx.com/")
.contact("xx@qq.com")
.version("1.0")
.build())
//分组名称
.groupName("2.X版本")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.github.xiaoymin.knife4j.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}
第三步:使用注解进行接口的描述
@Api(tags = "首页模块")
@RestController
public class IndexController {
@ApiImplicitParam(name = "name",value = "姓名",required = true)
@ApiOperation(value = "向客人问好")
@GetMapping("/sayHi")
public ResponseEntity<String> sayHi(@RequestParam(value = "name")String name){
return ResponseEntity.ok("Hi:"+name);
}
}
第四步运行。
这里我运行遇到了报错:Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException
需要到配置文件中配置一下
spring:
application:
name: yupao-backend
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
这是因为Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。
此时,启动Spring Boot工程,在浏览器中访问:http://ip:port/doc.html
可以通过在 controller 方法上添加 @Api、@ApiImplicitParam(name = “name”,value = “姓名”,required = true) 等注解来自定义生成的接口描述信息