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

Spring Boot URL请求返回400而非404问题排查求助

问题分析与解决

问题根源:路径参数正则不兼容实际请求路径

  1. 解码后请求路径的实际内容:
    你提供的编码URL解码后,路径部分为:
    /content/storage/path/someid/x/y/resource/{"reltype":"http://ns.example.com/examplecloud/rel/primary"}/:page
    其中path对应的片段里包含多个冒号(:),比如http://里的冒号、JSON结构里的冒号。

  2. API正则的限制导致解析失败:
    你的@Path注解中,path参数的正则是([^\\:]+/|),这里[^\\:]表示只匹配不包含冒号的字符。实际路径里的冒号打破了这个规则,导致JAX-RS在解析请求路径时直接判定为语法错误,返回400 Bad Request——这就是为什么调试器没触发,也没返回404(404是找不到资源,而400是请求本身格式不符合接口定义的规则)。

修复方案

修改路径参数的正则表达式,允许路径中包含冒号。根据需求有两种常见调整方式:

  • 最简单的方式,匹配:page之前的所有内容:
    @GET
    @Path("/{path:.*}/:page")
    @ApiParam(required = true) @PathParam("path") String path
    
  • 更精确的匹配,确保path以斜杠结尾(避免把:page的部分误匹配进去):
    @GET
    @Path("/{path:.*[^/]/}:page")
    @ApiParam(required = true) @PathParam("path") String path
    

调整后,请求就能正常被解析,进入接口的处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:42:14