2.6. 3scale API 管理 APIcast API 网关的高级操作简介
3scale APIcast 的高级操作将帮助您调整对应用程序编程接口(API)的访问配置。
2.6.1. 用于调用 3scale API 的公共基本 URL 复制链接链接已复制到粘贴板!
公共基本 URL 是您的 API 客户用来向 API 产品发出请求的 URL,该产品可通过 3scale 公开。这将是您的 APIcast 实例的 URL。
如果您使用自助管理部署选项之一,您可以在您管理的域名上为提供的每个环境(登台和生产)选择自己的公共基本 URL。这个 URL 应该与您 API 后端的 URL 不同,可能类似 https://api.yourdomain.com:443,其中 yourdomain.com 是属于您的域。设置公共基础 URL 后,请确保保存更改,如有必要,将暂存中的更改提升到生产。
您指定的公共基本 URL 必须使用 OpenShift 集群中可用的端口。默认情况下,OpenShift 路由器仅侦听标准 HTTP 和 HTTPS 端口(80 和 443)上的连接。如果您希望用户通过某些其他端口连接到您的 API,请与您的 OpenShift 管理员合作以启用该端口。
APIcast 仅接受对公共基础 URL 中指定的主机名的调用。例如,如果您将 https://echo-api.3scale.net:443 指定为公共基本 URL,则正确的调用将是:
curl "https://echo-api.3scale.net:443/hello?user_key=you_user_key"
如果您的 API 没有公共域,您可以在请求中使用 APIcast IP 地址,但您仍需要在公共基础 URL 字段中指定一个值,即使该域不是真实的。在这种情况下,请确保在 Host 标头中提供主机。例如:
curl "http://192.0.2.12:80/hello?user_key=your_user_key" -H "Host: echo-api.3scale.net"
如果要在本地机器上部署,您可以将"localhost"指定为域,因此公共基本 URL 类似 http://localhost:80,然后您可以发出类似如下的请求:
curl "http://localhost:80/hello?user_key=your_user_key"
如果您有多个 API 产品,请为每个产品设置适当的公共基础 URL。APIcast 根据主机名路由请求。
2.6.2. APIcast 如何应用映射规则来捕获 3scale API 管理 API 的使用 复制链接链接已复制到粘贴板!
根据对 API 的请求,映射规则定义指标或指定您要捕获 API 使用情况的方法。以下是映射规则的示例:
此规则意味着,任何以 / 开头的 GET 请求都以 1 为指标 hits 的增量。此规则匹配到您的 API 的任何请求。虽然这是有效的映射规则,但它太通用,如果您添加了更具体的映射规则,则通常会导致被双倍计数。
Echo API 的以下映射规则显示更为具体的示例:
映射规则在 API 产品和 API 后端级别上工作。
在产品级别上映射规则。
- 映射规则具有优先权。这意味着产品映射规则是第一个要评估的规则。
- 映射规则始终被评估,并且独立于这些后端接收重定向的流量。
在后端级别映射规则。
- 当您向后端添加映射规则时,这些规则将添加到所有产品中,并绑定所述后端。
- 映射规则在产品级别上定义的映射规则后评估。
- 只有在流量重定向到映射规则所属的同一后端时才评估映射规则。
- 产品后端的路径会自动放在捆绑到上述产品的后端的每个映射规则的前面。
使用产品和后端映射规则示例
以下示例显示了一个后端产品的映射规则。
Echo API 后端:
-
具有专用端点:
https://echo-api.3scale.net 包含使用以下模式的 2 个映射规则:
/hello /bye
-
具有专用端点:
Cool API 产品:
-
具有这个公共端点:
https://cool.api -
通过以下路由路径使用 Echo API 后端:
/echo。
-
具有这个公共端点:
使用以下模式映射规则会自动成为 Cool API 产品的一部分:
/echo/hello /echo/bye-
这意味着发送到公共 URL
https://cool.api/echo/hello的请求被重新定向到https://echo-api.3scale.net/hello。 -
同样,发送到
https://cool.api/echo/bye的请求重定向至https://echo-api.3scale.net/bye。
-
这意味着发送到公共 URL
现在,假设有一个名为 Tools For Devs 的其他产品,它使用相同的 Echo API 后端。
Tools for Devs 产品:
-
具有这个公共端点:
https://dev-tools.api -
通过以下路由路径使用 Echo API 后端:
/tellmeback。
-
具有这个公共端点:
使用以下模式映射规则是 Tools For Devs 产品的一部分:
/tellmeback/hello /tellmeback/bye-
因此,发送到公共 URL
https://dev-tools.api/tellmeback/hello的请求会被重定向到https://echo-api.3scale.net/hello。 -
同样,发送到
https://dev-tools.api/tellmeback/bye的请求重定向至https://echo-api.3scale.net/bye。
-
因此,发送到公共 URL
如果您使用
/ping模式的映射规则添加到 Echo API 后端,则产品 - Cool API 和 Tools For Devs 都会受到影响:-
cool API 具有一个使用此模式的映射规则:
/echo/ping。 -
Tools For Devs 有具有此模式的映射规则:
/tellmeback/ping。
-
cool API 具有一个使用此模式的映射规则:
映射规则的匹配
3scale 根据前缀应用映射规则。表示法遵循 OpenAPI 和 ActiveDocs 规格:
-
映射规则必须以正斜杠(
/)开头。 在路径上对文字字符串执行匹配,即 URL,例如
/hello。- 映射规则保存后,将导致请求发送到您已设置的 URL 字符串,并调用您围绕每个映射规则定义的指标或方法。
-
映射规则可以在查询字符串或正文中包含参数,例如
/{word}?value={value}。 APIcast 获取参数的方式如下:
-
GET方法:来自查询字符串。 -
POST、DELETE或PUT方法:来自正文。
-
-
映射规则可以包含命名通配符,例如
/{word}。此规则与占位符{word}中的任何内容匹配,它会使/morning等请求与映射规则匹配。通配符可以在斜杠之间或斜杠和点之间出现。参数也可以包含通配符。 -
默认情况下,所有映射规则都会根据您指定的排序顺序从第一到最后一个评估。如果您添加规则
/v1,它将匹配路径以/v1开头的请求,例如:/v1/word或/v1/sentence。 -
您可以在模式的末尾添加一个美元符号(
$)来指定完全匹配项。例如,/v1/word仅匹配/v1/word请求,不匹配/v1/word/hello请求。要完全匹配,还必须确保禁用了与所有(/)匹配的默认映射规则。 - 多个映射规则可以匹配请求路径,但如果都不匹配,则会使用 HTTP 404 状态代码丢弃该请求。
映射规则工作流
映射规则有以下工作流:
- 您可以随时定义一个新的映射规则。请参阅 定义映射规则。
- 下一次重新加载时将灰显映射规则,以防止意外修改。
- 要编辑现有的映射规则,您必须首先通过单击右侧的铅笔图标启用它。
- 若要删除规则,可单击回收站图标。
- 当您提升 Integration > Configuration 中的更改时,所有修改和删除都会保存。
停止其他映射规则
要停止处理进一步映射规则,请在创建新映射规则时选择 Last? 选项,特别是在处理一个或多个映射规则后。例如,如果您定义了与 API 集成设置中不同指标关联的多个映射规则,例如:
(get) /path/to/example/search
(get) /path/to/example/{id}
规则 /path/to/example/search 可以标记为 Last?,然后在调用 (get)/path/to/example/search 后,APIcast 停止处理,且不会在剩余的规则中搜索匹配项,规则 (get)/path/to/example/{id} 的指标将不会被递增。
2.6.3. APIcast 如何处理具有自定义要求的 API 复制链接链接已复制到粘贴板!
有些特殊情形需要自定义 APIcast 配置,以便 API 用户能够成功调用 API。
主机标头
除非 Host 标头与预期匹配,否则仅将这些 API 产品需要此选项。在这些情况下,在 API 产品前面有一个网关会导致问题,因为 Host 是网关之一,例如:xxxx-yyy.staging.apicast.io。
要避免这个问题,您可以在 Authentication Settings 的 Host Header 字段中定义 API 产品所需的主机: [Your_product_name] > Integration > Settings。
其结果是托管 APIcast 实例会在请求调用中重写主机规格。
保护 API 后端
在 APIcast 在生产环境中工作后,您可能希望将直接访问 API 产品限制为仅那些指定您指定的 secret 令牌的调用。为此,请设置 APIcast Secret Token。如需有关如何设置它的信息,请参阅 高级 APIcast 配置。
将 APIcast 与私有 API 搭配使用
借助 APIcast,可以保护互联网上不能公开访问的 API。必须满足的要求有:
- 自我管理的 APIcast 必须用作部署选项。
- APIcast 需要能够从公共互联网访问,并且能够向 3scale 服务管理 API 发出出站调用。
API 产品应该可由 APIcast 访问。
在这种情况下,您可以在 Private Base URL 字段中设置您的内部域名或 API 的 IP 地址,并照常执行其余步骤。但是,执行此操作意味着您无法利用暂存环境。测试调用将无法成功,因为暂存 APIcast 实例由 3scale 托管,无法访问您的私有 API 后端。在生产环境中部署 APIcast 后,如果配置正确,APIcast 可以按预期工作。