You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Swagger迁移至Springdoc OpenAPI后Swagger UI显示无操作定义错误

解决Springdoc OpenAPI显示“No operations defined in spec”问题

问题分析及修复方案

1. 控制器方法缺失HTTP请求注解

你的端点代码仅添加了Springdoc的@Operation等注解,但未标注HTTP请求方法(如@GetMapping、@PostMapping),导致Springdoc无法识别这是一个可暴露的API接口。

修复示例:

@GetMapping("/api/{id}") // 补充HTTP请求注解
@Operation(summary = "Test API", description = "This is a test api")
@ApiResponses(value = {
    @ApiResponse(responseCode = "200", description = "Success"),
    @ApiResponse(responseCode = "400", description = "ID is invalid")})
public @ResponseBody ResponseEntity<Resource> getId(
    @Parameter(description = "ID描述", required = true) @PathVariable final String id) {
    //Implementation
}

注意:@Parameter中的IdDesc若为未定义变量,需替换为具体描述字符串或确保该常量已正确定义。

2. GroupedOpenApi路径匹配规则错误

你配置的pathsToMatch("/api.*")不符合Springdoc默认的Ant路径匹配规则,若要匹配所有以/api开头的路径,需改为"/api/**"。

修复配置类:

@Bean
public GroupedOpenApi api() {
  return GroupedOpenApi.builder().group("Test")
    .packagesToScan("com.test") // 确保控制器类在该包或其子包下
    .pathsToMatch("/api/**").build(); // 修改路径匹配规则
}

3. 确认控制器包扫描范围

检查你的控制器类是否在com.test包或其子包下,否则packagesToScan("com.test")无法扫描到控制器,导致接口不被识别。

4. 核对Springdoc依赖版本

  • Spring Boot 3.x需搭配Springdoc v2.x版本
  • Spring Boot 2.x需搭配Springdoc v1.x版本

可在POM中明确指定版本(以Spring Boot 3.x为例):

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
  <version>2.2.0</version> <!-- 指定适配版本 -->
</dependency>

5. 验证OpenAPI规范生成结果

直接访问/v3/api-docs/Test(对应你定义的group名称),若返回的JSON中无paths字段,说明接口未被识别,需重新检查上述步骤。

内容的提问来源于stack exchange,提问作者user24621205

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:12:05