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_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
调用示例策略链输出
{ "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
内联
流程
获取当前的策略链:
$ 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}]
-
- 通过在链中添加、删除或重新排序策略来编辑策略链,或者更改其配置。
更新策略链。
在以下
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
内容
流程
将当前策略链保存到文件中:
curl -s "{admin_portal_url}/admin/api/services/{service_id}/proxy/policies.json?access_token={access_token}" | jq '.policies_config' > policies_config.json
-
通过在链中添加、删除或重新排序策略来编辑
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