Knife4j 基础(OpenAPI3+SpringBoot2.7)

1. Knife4j基础(OpenAPI3 + SpringBoot2.7)

本文按照官方文档,在 SpringBoot 2.7 项目中,集成 Knife4jOpenAPI3 版本。

2. 官网

Knife4j官网

Knife4j在实现OpenAPI3规范时,底层基础框架选择 springdoc-openapi 项目。

springdoc-openapi 官网

3. 初始化项目

3.1. 依赖

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
            <version>4.3.0</version>
        </dependency>

3.2. 配置

3.2.1. yml配置

# spring-doc-openapi项目配置
spring-doc:
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /v3/api-docs
  group-configs:
    - group: '默认分组'
      paths-to-match: '/**'
      packages-to-scan: com.example

# knife4j的增强配置,不需要增强可以不配
knife4j:
  enable: true
  setting:
    enable-footer: false

3.2.2. @Configuration配置

这里的配置,展示在文档首页中,对接口文档进行整体说明。

package com.example.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Knife4jConfig {
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("Knife4j示例项目 - 接口文档")
                        .description("项目简介,支持Markdown格式:`这里是代码标签哦`,**这里是强调哦**")
                        .version("V1.0")
                        .contact(new Contact().name("宋冠巡"))
                );
    }
}

3.3. 接口注解

演示基本的接口注解

在Controller控制器及内部接口方法中,添加注解。

package com.example.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.lang.Nullable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("index")
@Tag(name = "首页")
public class IndexController {

    @Operation(summary = "向客人问好")
    @Parameter(name = "name", description = "姓名", in = ParameterIn.QUERY)
    @GetMapping("/hello")
    public String sayHi(@RequestParam String name) {
        return "Hi:" + name;
    }


    @Operation(summary = "测试参数可以为空")
    @Parameters({
            @Parameter(name = "name", description = "姓名", in = ParameterIn.QUERY)
    })
    @GetMapping("/nullable")
    public String testNullable(@Nullable String name) {
        return "Hi:" + name;
    }

}

4. 页面效果页面效果

4.1. 首页

在这里插入图片描述

4.2. 接口详情页

在这里插入图片描述

在这里插入图片描述

5. @Parameter(required = false) 无效问题

OpenAPI3中,接口文档默认接口参数必须填写;如果一个参数确实不是必须,要将此接口参数中注明为@Nullable。此时,接口文档才会根据 @Parameter - required 属性的值,展示参数是否必须

import org.springframework.lang.Nullable;
    @Operation(summary = "测试参数可以为空")
    @Parameters({
            @Parameter(name = "name", description = "姓名", in = ParameterIn.QUERY)
    })
    @GetMapping("/nullable")
    public String testNullable(@Nullable String name) {
        return "Hi:" + name;
    }

6. OpenAPI3:Migrating from SpringFox

进一步的细节,参考 springdoc-openapi 官方文档
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
springboot2.7整合knife4j4.3是指在Springboot 2.7版本中使用Knife4j 4.3进行API文档的生成和管理。具体步骤如下: 1.在pom.xml文件中添加Knife4j的依赖: ``` <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>4.3.0</version> </dependency> ``` 2.在application.yml文件中进行配置: ``` spring: profiles: active: dev application: name: demo-knife4j-openapi3 servlet: multipart: max-file-size: 10MB max-request-size: 100MB resources: static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 serialization: fail-on-empty-beans: false indent-output: true write-dates-as-timestamps: false write-null-map-values: false write-empty-json-arrays: false write-enums-using-to-string: true http: encoding: charset: UTF-8 enabled: true servlet: session: timeout: 30m datasource: url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 5 min-idle: 5 max-active: 20 test-on-borrow: true validation-query: SELECT 1 FROM DUAL filters: stat,wall,log4j connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 jpa: show-sql: true hibernate: ddl-auto: update naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl server: port: 8080 tomcat: uri-encoding: UTF-8 max-threads: 200 min-spare-threads: 10 max-http-header-size: 1048576 accesslog: enabled: true directory: logs prefix: access_log suffix: .log rotate: true pattern: common knife4j: title: demo-knife4j-openapi3 description: demo-knife4j-openapi3 version: 1.0.0 contact: name: demo-knife4j-openapi3 url: http://localhost:8080/doc.html email: demo-knife4j-openapi[email protected] license: name: Apache License 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html terms-of-service-url: http://localhost:8080/doc.html host: localhost:8080 packages: com.example.demo ``` 3.在启动类上添加@EnableKnife4j注解: ``` @SpringBootApplication @EnableKnife4j public class DemoKnife4jOpenapi3Application { public static void main(String[] args) { SpringApplication.run(DemoKnife4jOpenapi3Application.class, args); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋冠巡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值