3.3. 使用 API 修改代理策略链


要在策略链中管理策略,您可以使用帐户管理 API,而不使用 3scale 管理门户。使用帐户管理 API (称为 API),您可以更改控制 API 流量的代理策略链。您可以添加、删除、重新排序或修改策略,将整个功能视为一个端点,称为 Proxy Policies Chain Update。使用 Proxy Policies Chain Update 端点调用 API:

PUT /admin/api/services/{service_id}/proxy/policies.json

对端点的调用必须在请求正文中包含 access_tokenpolicies_config 参数。policies_config request body 参数应该是 URL 编码的 JSON 数组。数组中的每个元素代表一个策略配置。

Proxy Policies Chain Update 端点返回更新的代理策略链。无效的输入会导致错误。

要查看策略链,请对帐户管理 API 使用以下 GET 调用:

GET /admin/api/services/{service_id}/proxy/policies.json

GET 调用示例策略链输出

{
  "policies_config": [
    {
      "name": "cors",
      "version": "builtin",
      "configuration": {
        "allow_headers": [],
        "allow_methods": [
          "GET"
        ],
        "allow_origin": "https://example.com",
        "allow_credentials": true
      },
      "enabled": true
    },
    {
      "name": "apicast",
      "version": "builtin",
      "configuration": {},
      "enabled": true
    }
  ]
}

在前面的 JSON 响应中,policy_config 属性的有效负载是一个数组,代表调用 Proxy Policies Chain Update 端点中的 policies_config 参数的预期值。

3.3.1. 使用 curl 命令更新策略链

以下示例演示了如何使用 curl 命令和 jq 工具读取和更新代理策略链。将占位符值 {admin_portal_url}{service_id}{access_token} 替换为代表您的环境的值。

3.3.1.1. 在 curl 请求中提供 policies_config 内联

流程

  1. 获取当前的策略链:

    $ curl -s "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json?access_token={access_token}" | jq '.policies_config' -c
    注意
    • -s 选项启用"silent"模式,以抑制不属于请求响应的输出。
    • jq '.policies_config' 从响应中的 policies_config JSON 属性中提取策略链数组。
    • jq 工具的 -c 选项以紧凑模式输出,以避免多行。

    该命令返回一个在策略链中显示 CORS 和 APIcast 策略的响应,例如:

    [{"name":"cors","version":"builtin","configuration":{"allow_headers":[],"allow_methods":["GET","POST","PUT"],"allow_origin":"https://example.com","allow_credentials":true},"enabled":true},{"name":"apicast","version":"builtin","configuration":{},"enabled":true}]
  2. 通过在链中添加、删除或重新排序策略来编辑策略链,或者更改其配置。
  3. 更新策略链。

    在以下 curl 命令示例中,CORS 策略已从链中删除,但您仍可以对策略链进行其他更改。

    $ curl -X PUT "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json" -d 'access_token={access_token}' -d 'policies_config=[{"name":"apicast","version":"builtin","configuration":{},"enabled":true}]'

3.3.1.2. 从文件提供 policies_config 内容

流程

  1. 将当前策略链保存到文件中:

    curl -s "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json?access_token={access_token}" | jq '.policies_config' > policies_config.json
  2. 通过在链中添加、删除或重新排序策略来编辑 policies_config.json 文件中的策略链,或者更改其配置。
  3. 更新策略链:

    $ curl -X PUT "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json" -d 'access_token={access_token}' --data-urlencode policies_config@policies_config.json
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.