目录

  • 序:接口文档
  • 1 Swagger
    • 1.1 基本信息
    • 1.2 接入步骤
  • 2 Knife4j
    • 2.1 基本信息
    • 2.2 接入步骤

序:接口文档

​在开发过程中,接口文档是非常重要的一环,在 Spring Boot 中,我们可以通过集成第三方来实现接口文档的自动生成。

​通过注解来描述接口,然后根据这些注解自动生成接口文档,它不仅方便开发者查看和理解接口的功能和参数,还能帮助前后端开发协同工作,提高开发效率。

​常用的接口文档,有Swagger和Knife4j,推荐Knife4j 。

  • 作用
    • 方便前后端开发对接
    • 方便沉淀和维护
    • 支持在线调试、在线测试
    • 可以导出接口文档

1 Swagger

Swagger 是一个 RESTful 接口文档的规范和工具集,它的目标是统一 RESTful 接口文档的格式和规范。

1.1 基本信息

  • 官网

    https://swagger.io/

  • Maven中央仓库

    • 后端

      https://mvnrepository.com/artifact/io.springfox/springfox-swagger2

    • 前端

      https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui

1.2 接入步骤

  • 根据maven中央仓库,引入包

    根据SpringBoot选择对应的版本,我的是SpringBoot版本是2.7.15

    • Swagger后端包

    io.springfox springfox-swagger2 2.9.2 “`

    • Swagger前端包

          io.springfox    springfox-swagger-ui    2.9.2
  • 创建配置类

    新建SwaggerConfig.java 文件

    package com.leovany.usercenter.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@EnableSwagger2public class SwaggerConfig {    @Bean    public Docket productApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                // 这里一定要标注你控制器的位置                .apis(RequestHandlerSelectors.basePackage("com.leovany.usercenter.controller"))                .paths(PathSelectors.any())                .build();    }    /**     * api 信息     *     * @return     */    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("用户中心")                .description("用户中心接口文档")                .termsOfServiceUrl("https://github.com/leovany")                .contact(new Contact("leovany", "https://github.com/leovany", "xxx@qq.com"))                .version("v1.0.0")                .build();    }}
  • 配置路径匹配策略

    • 如果 springboot version >= 2.6,需要添加如下配置

      spring:mvc:pathmatch:    matching-strategy: ANT_PATH_MATCHER
    • 原因

      Spring MVC 的路径匹配策略是 ant-path-matcher,而 Spring Boot 2.6.x版本的默认匹配策略是 path-pattern-matcher,这就导致启动时报错,错误内容信息:

      Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException...
  • 启动项目,输入地址

    地址:http://localhost:8080/swagger-ui.html

2 Knife4j

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案

2.1 基本信息

  • 官网

    https://doc.xiaominfo.com/v2/index.html

  • Maven中央仓库:

    https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter

  • 接入文档

    https://doc.xiaominfo.com/v2/documentation/

2.2 接入步骤

  • 根据maven中央仓库,引入包

    根据SpringBoot选择对应的版本,我的是SpringBoot版本是2.7.15

        com.github.xiaoymin    knife4j-spring-boot-starter    3.0.3
  • 创建配置类

    新建Knife4jConfig.java 文件

    package com.leovany.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;/** * 自定义 Knife4j 接口文档的配置 */@Configuration@EnableSwagger2public class Knife4jConfig {    @Bean(value = "defaultApi2")    public Docket defaultApi2() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                // 项目controller的位置                .apis(RequestHandlerSelectors.basePackage("com.leovany.usercenter.controller"))                .paths(PathSelectors.any())                .build();    }    /**     * api 信息     *     * @return     */    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("用户中心")                .description("用户中心接口文档")                .termsOfServiceUrl("https://github.com/leovany")                .contact(new Contact("leovany", "https://github.com/leovany", "xxx@qq.com"))                .version("1.0.0")                .build();    }}
  • 配置路径匹配策略

    • 如果 springboot version >= 2.6,需要添加如下配置

      spring:mvc:pathmatch:    matching-strategy: ANT_PATH_MATCHER
    • 原因

      Spring MVC 的路径匹配策略是 ant-path-matcher,而 Spring Boot 2.6.x版本的默认匹配策略是 path-pattern-matcher,这就导致启动时报错,错误内容信息:

      Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException...
  • 配置是否屏蔽文档接口

    在文件application.yml配置,生产环境注意防止暴露接口文档(production设置为true)

    knife4j:  # 开启增强配置  enable: true  # 是否屏蔽接口文件(true=屏蔽,false=不屏蔽)  production: false
  • 启动项目,输入地址

    地址:http://localhost:8080/doc.html

本文由博客一文多发平台 OpenWrite 发布!