3.6. 路径路由

如果配置了 APICAST_SERVICES_LIST 环境变量,APIcast 处理 3scale 帐户上配置的所有 API 服务(或服务子集)。通常,APIcast 会根据请求的主机名将 API 请求路由到适当的 API 服务,方法是将它与 公共基础 URL 匹配。找到匹配项的第一个服务用于授权。

路径路由功能允许在多个服务上使用相同的 公共基础 URL,并使用请求的路径路由请求。要启用该功能,请将 APICAST_PATH_ROUTING 环境变量设置为 true1。启用后,APIcast 将根据主机名和路径将传入的请求映射到服务。

如果要使用同一 公共基本 URL 通过不同的网关公开托管的多个后端服务,可使用此功能。要达到此目的,您可以为每个 API 后端(即 私有基本 URL)配置多个 API 服务并启用路径路由功能。

例如,您使用以下方式配置了 3 个服务:

  • Service A Public Base URL: api.example.com 映射规则: /a
  • Service B Public Base URL: api2.example.com 映射规则: /b
  • Service C Public Base URL: api.example.com 映射规则: /c

如果路径路由为 disabled (APICAST_PATH_ROUTING=false),对 api.example.com 的所有调用都将尝试匹配 Service A。因此,调用 api.example.com/capi.example.com/b 将失败,并显示 "No Mapping Rule match" 错误。

如果路径路由为 enabled (APICAST_PATH_ROUTING=true),则调用将由主机和路径匹配。因此:

  • api.example.com/a 将路由到 Service A
  • api.example.com/c 将路由到 Service C
  • api.example.com/b 将失败,显示"No Mapping Rule match"错误,即它不匹配 Service B,因为 公共基础 URL 不匹配。

如果使用路径路由,您必须确保使用相同 公共基本 URL 的不同服务中的映射规则之间没有冲突,例如,仅在一个服务中使用方法 + 路径模式的组合。