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

Spring Boot 3中WebFlux如何忽略URL末尾斜杠?

Spring Boot 3 WebFlux 配置URL末尾斜杠匹配

在Spring Boot 3中,WebFlux默认不再忽略URL末尾的斜杠。比如你定义了GET接口/users,访问/users/会直接返回404。

之前可以通过实现WebFluxConfigurer并重写configurePathMatching方法修改该行为,但现在setUseTrailingSlashMatch方法已被废弃。官方推荐用PathPatternParser.setMatchOptionalTrailingSeparator(boolean)替代,具体配置有两种方式:

方式一:配置类自定义PathPatternParser

创建配置类,自定义PathPatternParser并指定匹配规则,再注入到对应的路径映射器中:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.handler.SimpleUrlHandlerMapping;
import org.springframework.web.reactive.router.RouterFunctionMapping;
import org.springframework.web.util.pattern.PathPatternParser;

@Configuration
public class WebFluxPathConfig {

    @Bean
    public PathPatternParser pathPatternParser() {
        PathPatternParser parser = new PathPatternParser();
        // 设置为true,允许URL末尾带斜杠的请求匹配
        parser.setMatchOptionalTrailingSeparator(true);
        return parser;
    }

    // 适配RouterFunction风格的路由
    @Bean
    public RouterFunctionMapping routerFunctionMapping(PathPatternParser pathPatternParser) {
        RouterFunctionMapping mapping = new RouterFunctionMapping();
        mapping.setPatternParser(pathPatternParser);
        return mapping;
    }

    // 适配@RequestMapping风格的控制器
    @Bean
    public org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping requestMappingHandlerMapping(PathPatternParser pathPatternParser) {
        org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping mapping = 
            new org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping();
        mapping.setPatternParser(pathPatternParser);
        return mapping;
    }
}

方式二:通过配置文件快速配置

Spring Boot 3提供了现成的配置属性,无需编写代码即可生效:
在application.yml中添加:

spring:
  webflux:
    pathmatch:
      trailing-slash-match: true

或者在application.properties中添加:

spring.webflux.pathmatch.trailing-slash-match=true

这个配置会自动应用到WebFlux的路径解析器上,效果与调用setMatchOptionalTrailingSeparator(true)完全一致,更简洁高效。

注意:如果同时使用自定义配置类和配置文件,配置文件的优先级更高,会覆盖自定义的PathPatternParser设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:50:23