api_get() 方法
将 GET 请求发送到 HighBond API。
语法
hcl.api_get("HighBond API 请求详细信息")
参数
名称 | 描述 |
---|---|
HighBond API 请求详细信息 |
Diligent One 资源的请求详细信息。 hcl.api_get 会在后台自动提供请求详细信息的标准部分。除非要覆盖默认值,否则不需要显式指定这些请求元素:
有关特定 Diligent One 资源的请求语法,请参阅 HighBond API 参考。 说明 如果您明确地指定主机信息,则必须使用 HTTPS 协议来连接 HighBond API。例如:https://apis-us.highbond.com |
返回
来自 HighBond API 服务器的响应对象。
示例
基本示例
说明
hcl.api_get() 方法会返回一个响应对象,其中包含 HighBond API 服务器返回的所有内容。响应对象包含元数据和数据。通常需要对响应对象进行后续处理,以提取可在 Python/HCL 脚本中使用的数据。有关详细信息,请参阅高级示例。
获取 Diligent One 实例中所有项目的列表
返回正在处理的 Diligent One 实例中所有项目的列表:
hcl.api_get("projects")
获取 Diligent One 结果应用程序中所有集合的列表
返回正在处理的 Diligent One 实例中所有结果集合的列表:
hcl.api_get("collections")
获取项目中所有问题的列表
返回 ID 为 19756 的项目中所有问题的列表:
hcl.api_get("projects/19756/issues")
获取问题列表并限制响应中的字段
返回 ID 为 19756 的项目中所有问题的列表,并且仅返回每个问题的指定字段:
hcl.api_get("projects/19756/issues?fields[issues]=title,description,creator_name,created_at,updated_at,owner")
高级示例
访问 HighBond API 服务器返回的响应对象中的问题列表
通常情况下,您需要处理 HighBond API 服务器返回的响应对象,以便能够使用其中包含的数据。
返回响应对象,其中包含 ID 为 19756 的项目中所有问题的列表:
response_object = hcl.api_get("projects/19756/issues")
使用 Python Requests 库中的 .json() 方法,将响应对象的 JSON 编码部分提取到 Python 字典。此时便可以处理 Python/HCL 脚本中的问题数据。
import requests hb_issues_dict = response_object.json()
还可以在单个步骤中执行上述两项操作:
import requests hb_issues_dict = hcl.api_get("projects/19756/issues").json()
可以将 Python 字典打印到屏幕上以查看内容。显示的字典没有应用任何其他格式,不含换行符或用于引出嵌套元素的缩进:
print(hb_issues_dict)
使用 Python JSON 库中的 .dumps() 方法来应用其他格式,使字典内容更具可读性:
import json hb_issues_dict_formatted = json.dumps(hb_issues_dict, indent=4) print(hb_issues_dict_formatted)
带格式的输出示例:
{ "data": [ { "id": "52983", "type": "issues", "attributes": { "title": "Data retention and backup", "description": null, "creator_name": null, "created_at": "2015-05-08T20:59:34Z", "updated_at": "2016-11-17T18:44:59Z", "position": 3, "owner": "Jane Sleaman", "recommendation": "", "deficiency_type": "Deficiency", "severity": "High", "published": true, "identified_at": "2015-05-08T20:59:34Z", "reference": null, "reference_prefix": "1-A", "risk": "<p>Data retention and backup policy does not exist</p>\r\n", "scope": null, "escalation": null, "cause": "", "effect": "", "cost_impact": 3000.0, "executive_summary": null, "executive_owner": null, "project_owner": null, "closed": false, "remediation_status": null, "remediation_plan": null, "remediation_date": null, "actual_remediation_date": null, "retest_deadline_date": null, "actual_retest_date": null, "retesting_results_overview": null, "custom_attributes": [] }, "relationships": { "project": { "data": { "id": "19756", "type": "projects" } }, "owner_user": { "data": { "id": "HWF9X5jpXsS", "type": "users" } }, "executive_owner_user": { "data": null }, "project_owner_user": { "data": null }, "creator_user": { "data": null } } } ], "links": { "prev": null, "next": null } }
备注
身份验证
所有 HighBond API 请求需要进行身份验证。您必须是至少一个 Diligent One 实例中的系统管理员才能访问该 API。
要进行身份验证,请使用启动面板为您的账户创建一个 HighBond API 令牌。该令牌是验证您身份的一个字符串,它允许您安全地访问 HighBond API。有关创建令牌的帮助,请参阅创建和管理 HighBond 访问令牌。
将 HighBond API 令牌与 HighBond API 方法结合使用
要将 HighBond API 令牌与 HighBond API 方法结合使用,必须将该令牌分配给一个名为 v_hb_token 的 HCL 变量。分配该令牌之后,它将会在后台自动用于身份验证,无需在 Diligent One 脚本中显式指定。有关将令牌分配给变量的信息,请参阅使用变量窗口定义 HCL 变量。
系统用户令牌
购买了特定 Diligent One 工具包的客户,还可以选择使用通用系统用户令牌,而不是与特定用户帐户关联的令牌进行身份验证。
仅指定资源 URL 的唯一部分
使用 HighBond API 方法时,只需指定 Diligent One 资源 URL 的唯一部分或端点。无需指定您正在处理的 Diligent One 实例的公共部分(基础 URL)或 ID。此信息在后台自动提供。
例如,如果您在 ID 为 1000236 的 Diligent One 实例中工作,那么这两个 API 请求会返回相同的响应。二者均列出项目 19756 中的所有问题。
hcl.api_get("projects/19756/issues")
hcl.api_get("https://apis.highbond.com/v1/orgs/1000236/projects/19756/issues")
请参阅《HighBond API 参考》
HighBond API 参考中提供了每个 Diligent One 资源的请求语法。例如,下面是获取项目中问题列表的请求语法。
如果使用 HCL 方法发出请求,则可以从 projects/... 开始指定语法:
如果从 Diligent One 外部发出请求,则需要从协议 ( https://... ) 开始指定整个资源 URL。
在资源 URL 中使用变量
与在资源 URL 中指定文本 ID 不同,您可能具有需要在该 URL 中使用变量的代码。资源 URL 被格式化为字符串,因此要在字符串中包含变量,您需要使用下面所示的 Python 技术之一。
您可以使用 Python f 字符串:
v_project_id = "19756"
hcl.api_get(f"projects/{v_project_id}/issues")
您可以使用 Python 字符串连接:
v_project_id = "19756"
hcl.api_get("projects/" + v_project_id + "/issues")