Каков индекс отношений в RST API VSTS / AzureDevOps? - PullRequest
0 голосов
/ 11 января 2019

В официальной документации API-интерфейса REST AzureDevOps основная часть JSON для обновления вложения имеет следующий вид:

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

Откуда исходит это число 2relations/2/)?


Пока я понял, что он начинается с нуля, но я не могу понять, как он соотносится с вложениями.

Обновив комментарии к приложениям, я смог понять, что есть что, но не могу понять логику.

Информация, относящаяся к 3 вложениям в тестовом примере ниже, соответствует: этому магическому индексу / имени вложения / идентификатору вложения (увеличивается при каждом создании вложения) / идентификатору вложения, появляющемуся в URL:

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

Есть идеи?

1 Ответ

0 голосов
/ 14 января 2019

Это число является нулевым индексом отношений. Отношения включают в себя вложения, но также и ссылки, это то, что могло вас запутать.

Например, с 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))
...