swagger显示示No operations defined in spec的解决

发布时间 2023-08-09 13:33:00作者: Msea

背景: Spring2.6集成swagger2.0, 启动后访问:http://localhost:80/swagger-ui/index.html,报错:

No operations defined in spec!

查询资料的好几种结果:

1. swagger解析的包路径配置错误, 需要修改basePackage路径,反复查看是正确的。

2. 扫描的类或者方法上没有配置:@APIZ或者@ApiOperation

后来终于查询到是缺少了下面的配置:

 配置后重启成功访问接口信息。

原因应该是spring boot 2.6版本将Spring MVC 处理程序映射匹配请求路径的默认策略已从AntPathMatcher更改为PathPatternParser。Actuator端点现在也使用基于 PathPattern 的 URL 匹配。需要注意的是,Actuator端点的路径匹配策略无法通过配置属性进行配置。如果需要将默认切换回 AntPathMatcher,可以将 spring.mvc.pathmatch.matching-strategy 设置为 ant-path-matcher,比如像上面截图中的这样。

顺便再了解学习下AnPathMatcher. 首先,ant_path_matcher是一种路径匹配的策略,它支持ANT样式的路径模式,如“/users/**”,这是一种具有递归通配符的路径模式,表示/users路径下的所有路径都将被匹配。相比于正则表达式,ANT样式的路径模式更加简单易用,而且支持更多的特殊字符。而在Spring MVC中,路径匹配的策略非常重要,因为它控制着请求如何被处理。当有一个请求来到服务器时,Spring MVC会首先把请求的URL转换成一个路径,然后采用匹配策略来判断该请求应该由哪个控制器来处理。如果路径匹配成功,那么就会将请求转发给相应的控制器,控制器再进行进一步的处理。如果路径匹配失败,那么就会返回一个404错误。在实际开发中,我们可以采用不同的匹配策略来满足不同的需求。例如,如果我们希望一个请求的路径必须完全匹配某个固定的字符串,那么可以使用精确匹配策略;如果我们希望一个请求的路径可以包含一些可变的参数,那么可以使用路径参数匹配策略。而ant_path_matcher则是一种比较灵活的匹配策略,它可以支持ANT样式的路径模式,这在某些情况下会非常有用。

总之,spring.mvc.pathmatch.matching-strategy=ant_path_matcher是Spring MVC中非常关键的一项配置,它可以影响请求的处理过程,进而影响整个Web应用程序的行为。了解这项配置的作用和用法,对于掌握Spring MVC框架的开发者来说至关重要。