VSTS / AzureDevOps REST API中的关系索引是什么?

时间:2019-01-11 11:05:35

标签: azure-devops azure-devops-rest-api

在官方Documentation of AzureDevOps REST API中,用于更新附件的JSON正文如下:

[
  {
    "op": "test",
    "path": "/rev",
    "value": 3
  },
  {
    "op": "replace",
    "path": "/relations/2/attributes/comment",
    "value": "Adding traceability to dependencies"
  }
]

这个数字2(在relations/2/中是哪里来的?


到目前为止,我已经知道它是从零开始的,但是我无法弄清楚它与附件的匹配方式。

通过更新附件的注释,我已经能够理解是哪个,但是我无法理解逻辑。

以下测试案例中与3个附件相关的信息对应于:该魔术索引/附件名称/附件ID(每次创建附件时增加)/出现在URL中的附件ID:

  • 附件#0 === default_AA.png === 122 === 87042366-deda-4634-8284-8f06ed552323
  • 附件#1 === default_MC.png === 124 === 5a931981-9db8-41ba-ae0a-ca0b42e6d3fb
  • 附件#2 === default_BB.png === 123 === acbc0e56-47c0-473a-a664-359f53c34a99

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

此数字是关系的从零开始的索引。这些关系包括附件,但也包括链接,这可能会使您感到困惑。

例如,使用Python REST API,代码可能如下:

def get_relation_idx(tc, attachment_id):
    """Return the index in relations corresponding to a the attachment id (or part of it)"""
    for idx, rel in enumerate(tc.relations):
        if rel.rel == "AttachedFile" and attachment_id in rel.url:
            return idx
    return None

attachment_id = "87042366"
tc = wit_client.get_work_item(12345, expand="Relations")
idx = get_relation_idx(tc, attachment_id)
print("Attachment {} has index {}".format(attachment_id, idx))