KrakenD已配置/city固定子路径时如何设置catchall兜底匹配端点?
KrakenD catchall类型端点配置方法
KrakenD原生支持catchall/fallback类型端点,可通过路径通配符+匹配优先级规则实现你的需求,具体方案如下:
核心规则
KrakenD的端点匹配遵循精确匹配优先级高于通配符匹配的逻辑,你已定义的/city/toronto、/city/vancouver两个精确路径优先级始终高于后续配置的通配符路径,不会被通配符覆盖。
具体配置
你只需要在端点列表最后新增路径为/city/*的通配符端点,即可捕获所有/city/前缀下未被精确匹配的请求,将其转发到你需要的/city/other上游端点即可。
参考配置示例:
endpoints: # 原有精确匹配端点,优先级最高 - endpoint: /city/toronto backend: - url_pattern: /toronto/upstream/path host: ["http://your-upstream-host"] - endpoint: /city/vancouver backend: - url_pattern: /vancouver/upstream/path host: ["http://your-upstream-host"] # 新增catchall通配符端点,仅匹配未命中上述精确规则的请求 - endpoint: /city/* backend: - url_pattern: /city/other host: ["http://your-upstream-host"]
补充说明
- 通配符
*仅支持放在路径的末尾位置,不支持中间插入(比如/city/*/info为非法配置),你的场景完全符合使用要求。 - 如果你需要将通配符捕获到的城市名传递给上游,可使用
{*}占位符引用匹配内容,比如要将城市名作为查询参数传递时,可将后端url_pattern修改为/city/other?city={*}。 - 如果你需要配置全局fallback,捕获所有未命中任何端点的请求,直接配置
endpoint: "/*"的端点即可,该端点优先级为全局最低。
内容的提问来源于stack exchange,提问作者Billy Billy
相关产品推荐
相关产品推荐

