springboot集成springdoc-openapi

本文介绍了如何在SpringBoot应用中集成SpringDoc OpenAPI以创建基础API文档,并进一步升级到更强大的Knife4j,提升文档界面和权限管理。通过实例展示了配置步骤和关键代码,助你快速掌握API文档的高级定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、springboot集成springdoc-openapi

1. 添加pom.xml 依赖

<!--swagger-->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.6.9</version>
</dependency>

2. 配置config

@OpenAPIDefinition(
        security = @SecurityRequirement(name = "Authorization")
)
@SecurityScheme(type = SecuritySchemeType.APIKEY, name = "Authorization", scheme = "Authorization", in = SecuritySchemeIn.HEADER)
@Configuration
public class OpenApiConfig {
    private String title = "SpringDoc API";
    private String description = "SpringDoc Application";
    private String version = "v0.0.1";

    @Bean
    public OpenAPI springOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title(title)
                        .description(description)
                        .version(version));
    }
}

这里的@OpenAPIDefinition 和@SecurityScheme都是springdoc注解,主要声明API信息:标题、版本、许可证、安全性、服务器、标签、安全性和拓展文档信息。
配置jwt时,@SecurityScheme(type = SecuritySchemeType.HTTP, name = “JWT”, scheme = “bearer”, in = SecuritySchemeIn.HEADER).scheme 还支持basic。
具体可查看官网文档: https://springdoc.org/index.html

3. 配置文件中配置文档开关

springdoc:
  api-docs:
    #是否开启文档功能,默认为true,可不配置
    enabled: true
  swagger-ui:
    # 访问ip:host/api,可直接访问Swagger springdoc
    path: /api

4. 业务逻辑相关代码

DTO

@Data
public class CustomizedWaveDTO {

    @Schema(name = "id")
    private Long id;

    @Schema(name = "sensorId")
    private Long sensorId;

    @Schema(name = "extensionType",description = "speed->速度,accelerated->加速度...",title = "speed->速度,accelerated->加速度...")
    private String extensionType;

    @Schema(name = "waveType",description = "频谱图->2,包络分析图->3...",title = "频谱图->2,包络分析图->3...")
    private String waveType;

    @Schema(name = "lowCut",description = "滤波初始频率",title = "滤波初始频率")
    private Double lowCut;

    @Schema(name = "highCut",description = "滤波截止频率",title = "滤波截止频率")
    private Double highCut;

    @Schema(name = "bandwidth",description = "滤波宽带",title = "滤波宽带")
    private Double bandwidth;
}

其中@Schema是springdoc配置接口回显数据的说明
controller

@RestController
@RequestMapping("/api/customizedWave")
@Tag(name = "自定义波形")
public class CustomizedWaveController {

    @Resource
    private CustomizedWaveService customizedWaveService;

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    @Operation(summary = "通过id获取自定义配置", description = "通过id获取自定义配置")
    public CustomizedWaveDTO getCustomizedWave(@PathVariable("id") Long id) {
        return customizedWaveService.findById(id);
    }

其中@Tag就相当于原来的@Api,声明一个Controller。
@Operation就相当于原来的@ApiOperation,声明一个接口信息。

启动项目,访问localhost:8081/api

在这里插入图片描述
配置授权信息
在这里插入图片描述
但是这时候界面也是极其简陋的:
在这里插入图片描述

二、springdoc-openapi基础上升级为knife4j

1.在pom.xml中添加knife4j依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-springdoc-ui</artifactId>
    <version>3.0.3</version>
</dependency>

2. 配置config

如果你不喜欢 swagger-ui 的界面风格,会集成 knife4j 的 ui。Spring Doc 也可以集成 knife4j。
如果要使用 knife4j ,Spring Doc 的配置中需要添加分组配置,我们这里添加一个最简单的分组配置。

@Bean
public GroupedOpenApi publicApi() {
    return GroupedOpenApi.builder()
            .group(title)
            .pathsToMatch("/**")
            .build();
}

3. 配置文件

knife4j:
	enable: true  # 默认为true,可不配置,用上面springdoc的enable一起控制两个接口文档

4.访问knife4j接口文档

http://localhost:8081/doc.html
在这里插入图片描述

配置一下请求头权限就可以测试接口了
在这里插入图片描述

### 集成 Spring Boot 2.7 和 springdoc-openapi-ui 的详细步骤 #### 添加依赖项 为了使 Spring Boot 应用程序能够支持 OpenAPI 文档并提供 Swagger UI 功能,在 `pom.xml` 文件中添加如下 Maven 依赖: ```xml <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.6.14</version> </dependency> ``` 此操作引入了必要的库来生成 API 文档以及展示界面[^1]。 #### 启动类配置 确保应用程序启动类上存在 `@SpringBootApplication` 注解,这会自动激活所需的组件扫描和其他默认设置。如果希望自定义 OpenAPI 定义,则可以在同一文件内通过 `@OpenAPIDefinition` 来指定基本信息,例如标题、版本号等参数。 ```java import io.swagger.v3.oas.annotations.OpenAPIDefinition; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @OpenAPIDefinition(info = @Info(title="My Application", version="v1")) public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 上述代码片段展示了如何标注应用入口点,并且指定了开放平台接口描述的信息部分。 #### 访问路径设定 为了让用户更容易找到文档页面,默认情况下 `/v3/api-docs` 是 JSON 形式的 API 描述位置;而 HTML 版本则位于 `/swagger-ui.html`. 可以利用 `application.properties` 或者 YAML 格式来进行更细致的调整,比如改变这些 URL 路径或是启用额外的功能特性。 ```properties # application.properties example springdoc.api-docs.path=/api/v1/docs springdoc.swagger-ui.path=/api/v1/swagger-ui/ ``` 以上属性允许更改默认的服务端点地址以便更好地适应实际需求。 #### 自定义配置 (可选) 对于某些特定场景下的高级定制化要求,可以通过创建一个新的 Java 类实现 `WebMvcConfigurer`, 并重写相应的方法来自定义行为逻辑。另外也可以编写 Bean 方法返回 `GroupedOpenApi` 实例从而达到按需暴露不同模块的目的。 ```java @Configuration public class WebConfig implements WebMvcConfigurer { private final List<GroupedOpenApi> apis; @Autowired public WebConfig(List<GroupedOpenApi> apis){ this.apis = apis; } // ... other configurations ... } ``` 这段示例说明了怎样注册一组受保护资源集合的方式之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值