‎api_get()‎ 方法

将 GET 请求发送到 HighBond API。

语法

hcl.api_get("HighBond API 请求详细信息")

参数

名称描述
HighBond API 请求详细信息

Diligent One 资源的请求详细信息。

hcl.api_get 会在后台自动提供请求详细信息的标准部分。除非要覆盖默认值,否则不需要显式指定这些请求元素:

  • 主机信息

  • Diligent One 区域

  • Diligent One 实例 ID(组织 ID)

  • 标头信息

有关特定 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。

要进行身份验证,请使用 Diligent One 平台为您的帐户创建一个 HighBond API 令牌。该令牌是验证您身份的一个字符串,它允许您安全地访问 HighBond API。有关创建令牌的帮助,请参阅 管理访问令牌

将 HighBond API 令牌与 HighBond API 方法结合使用

要将 HighBond API 令牌与 HighBond API 方法结合使用,必须将该令牌分配给一个名为 v_hb_token 的 HCL 变量。分配该令牌之后,它将会在后台自动用于身份验证,无需在 Diligent One 脚本中显式指定。有关将令牌分配给变量的信息,请参阅

系统用户令牌

购买了特定 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")