Apache APISIX独立模式下如何配置限制性路径段路由通配符
解决方案
针对你需要匹配/v1/endpoint/{数字ID}/something/{数字ID}这类严格格式URI的需求,Apache APISIX 2.15版本提供两种精准匹配方案,比通配符*更具限制性:
方案1:正则表达式URI匹配
直接通过正则表达式定义URI规则,仅匹配符合两段数字ID的路径:
routes: # 原有路由 - uri: /v1/endpoint methods: [POST] service_id: myserviceid # 新增的精准匹配路由 - uri: "~^/v1/endpoint/\\d+/something/\\d+$" methods: [POST] # 根据实际需求调整请求方法 service_id: myserviceid # 替换为你的目标服务ID
说明:
~开头表示这是一个正则表达式URI\\d+匹配1个或多个数字(YAML中反斜杠需要转义,所以写\\d)^和$确保整个URI完全匹配,避免前缀匹配多余路径
方案2:路径变量+变量验证
通过定义路径变量,并添加变量校验规则,既可以精准匹配格式,还能后续在插件或上游中使用ID值:
routes: # 原有路由 - uri: /v1/endpoint methods: [POST] service_id: myserviceid # 新增路由 - uri: /v1/endpoint/{id1}/something/{id2} methods: [POST] service_id: myserviceid vars: # 验证id1是数字 - ["path.id1", "regex_match", "^\\d+$"] # 验证id2是数字 - ["path.id2", "regex_match", "^\\d+$"]
说明:
{id1}和{id2}是路径变量,可通过path.id1、path.id2获取对应值vars中的规则会校验变量是否为纯数字,只有满足条件的请求才会匹配该路由
注意:独立模式下修改conf/apisix.yaml后,需要重启APISIX容器才能生效。
内容的提问来源于stack exchange,提问作者Dave B 84
相关产品推荐
相关产品推荐

