当前位置: 首页 > article >正文

Swagger生成Api文档的增强解决方案--knife4j

方法一:

使用步骤

1.导入 knife4j 的maven坐标

在pom.xml中添加依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.5.0</version>
</dependency>
2.在配置类中加入 knife4j 相关配置WebMvcConfiguration.java
/**
     * 通过knife4j生成接口文档
     * @return
*/
    @Bean
    public Docket docket() {
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("项目接口文档")
                .version("2.0")
                .description("项目接口文档")
                .build();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
3. 设置静态资源映射,否则接口文档页面无法访问

WebMvcConfiguration.java

 /**
      * 设置静态资源映射
      * @param registry
 */
 protected void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
         registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
 }
4.访问:localhost:8080/doc.html 

完整代码如下:

package com.qing.springboot.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * 配置类,注册web层相关组件
 */
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {



    /**
     * 通过knife4j生成接口文档
     * @return
     */
    @Bean
    public Docket docket() {
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("项目接口文档")
                .version("2.0")
                .description("项目接口文档")
                .build();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.qing.springboot.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }

    /**
     * 设置静态资源映射
     * @param registry
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

方法二:

1.1 Maven 依赖引入
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.5.0</version>
</dependency>
1.2 application.yaml 添加配置
springdoc:
  default-flat-param-object: true
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /v3/api-docs
  group-configs:
    - group: 'default'
      paths-to-match: '/**'
      packages-to-scan: com.abc.project
knife4j:
  enable: true
  setting:
    language: zh_cn
1.3 添加配置文件

@Slf4j
@Configuration
public class SwaggerConfiguration implements ApplicationRunner {
​
    @Value("${server.port:8080}")
    private String serverPort;
    @Value("${server.servlet.context-path:}")
    private String contextPath;
​
    /**
     * 自定义 openAPI 个性化信息
     */
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info() // 基本信息配置
                        .title("xx系统") // 标题
                        .description("描述信息") // 描述 Api 接口文档的基本信息
                        .version("v1.0.0") // 版本
                        // 设置 OpenAPI 文档的联系信息,包括联系人姓名为"dong",邮箱为"abc.qq.com"
                        .contact(new Contact().name("dong").email("abc.qq.com"))
                     
                );
    }
​
    /**
     * 方便大家启动项目后可以直接点击链接跳转,而不用自己到浏览器输入路径
     */
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("API Document: http://127.0.0.1:{}{}/doc.html", serverPort, contextPath);
    }
}

友情提示:有些内容是可以根据自己的项目进行改写的,框架还有一些其他的功能,请自行学习。祝每次运行顺利! 


http://www.kler.cn/a/502641.html

相关文章:

  • 用 Python 从零开始创建神经网络(十九):真实数据集
  • JSON.stringify(res,null,2)的含义
  • 基于“大型园区”网络设计
  • 小结:华为交换机常用的操作指令
  • Kubeflow:云原生机器学习工作流自动化开源框架详解
  • burpsiute的基础使用(2)
  • http和https有哪些不同
  • 【Ubuntu与Linux操作系统:一、Ubuntu安装与基本使用】
  • 45. 跳跃游戏2
  • 使用 Docker 部署 Java 项目(通俗易懂)
  • Java的Stream流和Option类
  • 深入解析 Python 中的函数参数类型详解
  • ​Vue虚拟DOM:如何提高前端开发效率
  • 44_Lua迭代器
  • 【IPy模块01】Python运维模块之IP 地址、网段的基本处理
  • Qt中.pro文件中可以填加的宏和其他的信息
  • 【Linux笔记】Day2
  • Mysql--基础篇--多表查询(JOIN,笛卡尔积)
  • RPC调用初识
  • 探索AGI:智能助手与自我赋能的新时代
  • TypeScript语言的学习路线
  • 机器学习周报-GNN模型学习
  • 如何解决服务器中 MySQL 的死锁问题
  • OpenAI RFT API:让强化学习微调更简单,为语言模型带来突破性进展
  • 计算机网络之---TCP连接管理
  • 腾讯二面:MySQL的半同步是什么?不是MySQL的两阶段提交,那是什么?