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

Spring Boot 3.2.1迁移后带斜杠结尾的Rest端点无法访问

Spring Boot 3 带尾部斜杠的端点返回404?这是有意调整的行为

这不是Bug,是Spring Boot 3(对应Spring MVC 6)有意调整的默认路径匹配规则。

为什么会出现这个变化?

Spring Boot 2.x(基于Spring MVC 5)默认开启了useTrailingSlashMatch配置——不管请求路径带不带尾部斜杠,都会匹配到对应的控制器方法,比如/api/v1/locations和/api/v1/locations/会被视为同一个路径。

但从Spring MVC 6开始,官方把这个配置的默认值改成了false,也就是严格匹配路径:只有请求路径和注解里声明的完全一致时,才会映射到对应的方法。这么做是为了更贴合HTTP规范,避免因尾部斜杠引发的路由歧义。

怎么解决?

如果需要兼容旧的请求习惯,有两种方案可选:

方案一:全局开启尾部斜杠匹配

在配置文件里添加以下配置,恢复Spring Boot 2.x的行为:

  • YAML格式(application.yml):
spring:
  mvc:
    pathmatch:
      trailing-slash-match: true
  • Properties格式(application.properties):
spring.mvc.pathmatch.trailing-slash-match=true

方案二:单个端点同时支持两种路径

在控制器的@GetMapping注解里,同时声明带斜杠和不带斜杠的路径:

@RestController
@RequestMapping("/api/v1")
@RequiredArgsConstructor
public class TodosController {
    @GetMapping({"/locations", "/locations/"})
    public List<Integer> findAllCoordinates(){
        return List.of(10,15);
    }
}

建议

官方调整这个规则是为了规范路径匹配,建议优先让前端或调用方适配新规则(去掉请求路径的尾部斜杠)。如果必须兼容旧请求,再通过配置恢复,但要注意可能带来的路由冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:07:11