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

YARP路径配置中{**catch-all}、{**remainder}与{**any}的区别

YARP路径配置中{**catch-all}、{**remainder}和{**any}的差异解析

这三个都是YARP用于路径匹配的通配符语法,但语义和使用场景有明确区别:

1. {**catch-all}

  • 核心作用:匹配请求URL中当前位置之后的全部剩余路径内容(包含路径分隔符/),并且会将匹配到的内容作为路由参数传递给后端或用于后续逻辑。
  • 使用限制:只能放在路由模板的末尾,因为它会捕获所有后续路径段。
  • 示例:如果路由模板配置为/api/{**catch-all},当请求/api/users/1/profile时,catch-all参数的值就是users/1/profile。

2. {**remainder}

  • 核心作用:和{**catch-all}功能完全等价,是YARP早期版本的命名方式,后来为了语义更清晰更名为catch-all。
  • 使用建议:新开发的项目优先使用{**catch-all},remainder仅用于兼容旧配置。
  • 示例:路由模板/service/{**remainder}处理/service/orders/2/details时,remainder参数值为orders/2/details,效果和catch-all一致。

3. {**any}

  • 核心作用:匹配任意数量的路径段(0个或多个),但不会将匹配到的内容作为路由参数捕获——它仅用于判断路径是否符合规则,不传递具体路径值。
  • 使用灵活性:可以放在路由模板的任意位置,适合不需要获取具体路径内容的全局转发或模糊匹配场景。
  • 示例:
    • 模板/{**any}可以匹配所有请求URL(如/、/home、/products/electronics等);
    • 模板/admin/{**any}/settings可以匹配/admin/user/settings、/admin/dashboard/roles/settings这类路径。

核心差异总结

  • {**catch-all}和{**remainder}是等价的,用于捕获并传递剩余全部路径内容,仅能放在模板末尾;
  • {**any}仅用于匹配任意路径段,不捕获参数值,使用位置更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:09:54