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

SpringDoc Swagger报“No operations defined in spec!”问题排查求助

问题排查与解决方法

针对你遇到的Swagger提示"No operations defined in spec!"的问题,主要有以下几个关键问题需要修复:

1. 路径匹配配置错误

你的application.properties中springdoc.pathsToMatch配置的是/vtm/v1,但控制器的根路径是/api/v1/orders,两者完全不匹配,导致springdoc无法扫描到你的接口。

修复方式:
修改application.properties中的路径匹配配置,改为匹配控制器的路径:

springdoc.pathsToMatch=/api/v1/**

2. Get请求的参数注解错误

你的getOrderDetails方法使用了@GetMapping("/orders/{orderId}")路径变量,但参数上用了@RequestParam("orderId"),这是错误的用法,路径变量应该用@PathVariable。虽然这个不会直接导致Swagger扫描不到接口,但会导致接口无法正常调用,建议一并修复:

修复后的代码:

@Operation(summary = "Find Orders by ID", description = "Get order details by order ID", tags = { "contact" })
@GetMapping(value = "/orders/{orderId}", produces = { "application/json", "application/xml" })
public Order getOrderDetails(@PathVariable("orderId") int orderId) {
    Order order = new Order();
    return order;
}

3. 部分接口缺少Swagger注解(可选优化)

虽然springdoc可以自动扫描无Swagger注解的接口,但为了确保接口能被正确识别并生成更清晰的文档,建议给所有接口方法添加@Operation注解,比如Post、Put、Delete方法:

示例(Post方法添加注解):

@Operation(summary = "Save Order", description = "Create a new order record", tags = { "contact" })
@PostMapping("/orders")
public int saveOrderDetails(@RequestBody Order order) {
    int orderId = 1;
    return orderId;
}

4. 验证包扫描配置(已正确,但确认)

你的springdoc.packagesToScan=com.example.service是正确的,因为控制器OrderController就在这个包下,无需修改。

完成以上修复后,重启应用,访问/swagger-ui.html即可看到正常生成的API文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:17:40