4.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
PUT /admin/api/services/{service_id}/proxy/policies.json
对端点的调用必须在请求正文中包含 access_token 和 policies_config 参数。policies_config request body 参数应该是 URL 编码的 JSON 数组。数组中的每个元素代表策略配置。
Proxy Policies Chain Update 端点会返回更新的代理策略链。无效的输入会导致错误。
要查看策略链,请对帐户管理 API 使用以下 GET 调用:
GET /admin/api/services/{service_id}/proxy/policies.json
GET /admin/api/services/{service_id}/proxy/policies.json
GET 调用示例策略链输出
在前面的 JSON 响应中,policy_config 属性的有效负载是一个数组,代表对 Proxy Policies Chain Update 端点调用的 参数的预期值。
policies_config
4.3.1. 使用 curl 命令更新策略链 复制链接链接已复制到粘贴板!
以下示例演示了如何使用 curl 命令和 jq 工具读取和更新代理策略链。将占位符值替换为代表环境的 {admin_portal_url}、{service_id} 和 {access_token} 的值。
4.3.1.1. 在 curl 请求中提供内联 policy_config 复制链接链接已复制到粘贴板!
流程
获取当前的策略链:
curl -s "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json?access_token={access_token}" | jq '.policies_config' -c$ curl -s "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json?access_token={access_token}" | jq '.policies_config' -cCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意-
curl的-s选项启用"静默"模式,以抑制不属于请求响应的输出。 -
jq '.policies_config'从响应中的policies_configJSON 属性中提取策略链数组。 -
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}][{"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}]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- 通过在链中添加、删除或重新排序策略来编辑策略链,或者更改它们的配置。
更新策略链。
在以下
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}]'$ 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}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.1.2. 从文件中提供 policies_config 内容 复制链接链接已复制到粘贴板!
流程
将当前策略链保存到文件中:
curl -s "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json?access_token={access_token}" | jq '.policies_config' > policies_config.jsoncurl -s "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json?access_token={access_token}" | jq '.policies_config' > policies_config.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过在链中添加、删除或重新排序策略来编辑
policies_config.json文件中的策略链,或者更改它们的配置。 更新策略链:
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$ 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.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow