如何通过REST API获取ADO工作项链接及关联工作项状态?
获取Azure DevOps工作项关联链接及状态的两种方法
方法一:单次工作项API请求直接返回关联项状态
你可以修改现有请求的参数,让接口在返回链接的同时,一并拉取关联工作项的状态字段。调整后的请求端点如下:
https://{{coreServer}}/{{organization}}/{{project}}/_apis/wit/workitems/{{workItemId}}?api-version={{api-version}}&$expand=relations&$relationsFields=System.State
$expand=relations:确保返回当前工作项的所有关联链接$relationsFields=System.State:指定需要获取关联工作项的「状态」字段(如果需要其他字段,用逗号分隔即可,比如System.State,System.Title)
返回结果中,每个relations条目下的target对象会包含fields属性,里面就有System.State的具体值。
方法二:通过WIQL查询获取关联项及状态
如果需要更灵活的筛选(比如只获取特定类型的链接),可以用工作项查询语言(WIQL)构造查询,一次性拉取所有关联工作项及其状态。
- 构造WIQL语句(示例包含层级链接和相关链接,可按需调整链接类型):
SELECT [System.Id], [System.Title], [System.State] FROM WorkItemLinks WHERE (Source.[System.Id] = {{workItemId}}) AND ([System.Links.LinkType] IN ('System.LinkTypes.Hierarchy-Forward', 'System.LinkTypes.Related')) ORDER BY [System.Id] MODE (Recursive)
- 发送POST请求到查询端点:
https://{{coreServer}}/{{organization}}/_apis/wit/wiql?api-version={{api-version}}
请求Body为JSON格式:
{ "query": "SELECT [System.Id], [System.Title], [System.State] FROM WorkItemLinks WHERE (Source.[System.Id] = {{workItemId}}) AND ([System.Links.LinkType] IN ('System.LinkTypes.Hierarchy-Forward', 'System.LinkTypes.Related')) ORDER BY [System.Id] MODE (Recursive)" }
这种方式可以自定义返回字段、筛选链接类型,甚至递归查询多层关联的工作项。
内容的提问来源于stack exchange,提问作者Ragul
相关产品推荐
相关产品推荐

