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

Jetty中如何使用ConstraintMapping排除带路径参数的特定GET路径

问题1:带路径参数的pathSpec配置方式

你当前的写法确实无法生效,因为Jetty ConstraintMapping的pathSpec遵循Servlet路径匹配规范,不支持{param}格式的路径变量占位符,也不支持路径中段的通配符(比如/items/*/list写法不符合Servlet规范)。
有两种可行的配置方案:

  • 方案1:使用Jetty提供的RegexConstraintMapping(支持正则匹配路径),适配中间带任意参数的路径场景,示例代码如下:
RegexConstraintMapping exclude = new RegexConstraintMapping();
// 正则匹配 /items/任意非斜杠字符/list 的路径
exclude.setPathSpec("^/items/[^/]+/list$");
exclude.setMethod("GET");
// 后续绑定无权限约束的逻辑保持不变
  • 方案2:如果业务允许调整接口路径规则,可将路径调整为前缀匹配模式,比如把/items/{id}/list改为/items/list/{id},此时用标准ConstraintMapping配置pathSpec为/items/list/*即可生效。

问题2:指定方法的作用范围

你通过setMethod("GET")指定方法后,该约束规则仅会作用于匹配路径的GET请求,其余请求方法(POST、PUT、DELETE等)不会命中该排除规则,仍会走原有身份认证逻辑,完全符合你仅放行GET请求的需求。
如果需要该规则作用于多个方法,可以多次调用setMethod传入不同的HTTP方法名即可;如果不调用setMethod,规则默认对所有HTTP方法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:15:05