全部产品

路径匹配规则

更新时间:2020-04-21 11:33:53

API 网关支持 绝对匹配参数匹配 以及 前缀匹配 三种路径匹配规则。

绝对匹配

绝对匹配,表示只有请求的路径和配置的路径完全一样时才能匹配成功。

示例

例如,当前 API 的匹配规则为 GET /path

请求示例

  • 请求一:
    1. curl http://127.0.0.1/path
  • 请求二:
    1. curl http://127.0.0.1/other

根据 GET /path 的匹配规则,以上请求中,仅请求一能匹配到当前 API。

参数匹配

当无法确定请求的具体路径,仅明确知道一定存在一个值时,可以在路径中配置一个参数。

示例

例如,当前 API 的匹配规则为 GET /path/{id}

请求示例

  • 请求一:
    1. curl http://127.0.0.1/path
  • 请求二:
    1. curl http://127.0.0.1/path/1
  • 请求三:
    1. curl http://127.0.0.1/path/2
  • 请求四:
    1. curl http://127.0.0.1/path/1/2

根据 GET /path/{id} 的匹配规则,以上请求中,仅请求二、三能匹配到当前 API。

前缀匹配

如果希望带有某个前缀的请求全部匹配到某一个 API,则可以使用前缀匹配。

示例

例如,当前 API 的匹配规则为 GET /path/*

请求示例

  • 请求一:
    1. curl http://127.0.0.1/path/1
  • 请求二:
    1. curl http://127.0.0.1/path/2
  • 请求三:
    1. curl http://127.0.0.1/path/1/2

根据 GET /path/* 的匹配规则,以上所有请求都可以匹配到该 API。

冲突解决

API 网关支持三种匹配方式。不可避免的,多个 API 之间会出现冲突。比如 /hello/{id} 这两个 API 当遇到路径为 /hello 的请求时,就会冲突。

针对这种冲突情况,API 网关会遵循 最长路径优先 规则。当路径长度相同时,继而遵循 绝对匹配 > 参数匹配 > 前缀匹配 的规则。

示例

例如,此处提供以下几个 API。

  1. 以下配置,优先级由低到高, *为前缀匹配
  2. GET /*
  3. GET /{id}
  4. GET /path
  5. GET /{id}/*
  6. GET /{id}/{name}
  7. GET /{id}/temp
  8. GET /path/*
  9. GET /path/{id}
  10. GET /path/temp
  11. GET /{id}/{name}/{path}

配置路径匹配规则

在 API 网关控制台创建 API 时,您可以配置 路径匹配规则,支持 绝对匹配前缀匹配。两种匹配方式都可以在路径中添加参数。

路径匹配规则