接口信息:请求参数、响应参数、接口地址、接口名称、请求类型、请求格式、备注
提供方:后端开发者或者项目负责人
使用方:后端和前端开发者
项目交接时便于接手新项目的开发人员通过查看接口文档熟悉项目,便于大家参考和查阅,便于项目的沉淀和维护
便于前后端开发对接,可以看作前后端联调的介质
好的接口文档接口在线调试、在线测试,作为工具来提高开发测试的效率
手写:腾讯文档、Markdown 笔记
自动化生成接口文档:自动根据项目代码生成完整的文档或在线调试的网页
Swagger
Postman(侧重于接口管理)
国内:Apifox、Apipost、Eolink
引入依赖(Swagger 或 Knife4j)
自定义 Swagger 配置类
指定需要生成接口文档的代码位置(Controller)
注意!线上环境不要向外部暴露接口!!
解决方式:在 SwaggerConfig 配置文件开头添加以下限定配置,注明仅在部分环境开启接口文档
@Profile({"dev", "test"})
启动项目之后,直接访问自动生成的接口文档即可
参考官方文档:Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j (xiaominfo.com)
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
package com.example.usercenter.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
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.EnableSwagger2WebMvc;
/**
* 自定义 Swagger 接口文档的配置
*
* @author <a href="https://github.com/liyupi">程序员鱼皮</a>
* @from <a href="https://yupi.icu">编程导航知识星球</a>
*/
@Configuration
@EnableSwagger2WebMvc
@Profile({"dev", "test"})
public class SwaggerConfig {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 这里一定要标注你控制器的位置
.apis(RequestHandlerSelectors.basePackage("com.yupi.yupao.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* api 信息
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("逐浪用户中心")
.description("逐浪用户中心接口文档")
.termsOfServiceUrl("https://github.com/lvxinxinL")
.contact(new Contact("乐小鑫","https://github.com/lvxinxinL","20890@qq.com"))
.version("1.0")
.build();
}
}
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
spring:
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
?