如何通过Azure DevOps API获取拉取请求关联的工作项
高效获取Azure DevOps拉取请求关联工作项的方案
方案1:使用$expand参数直接在PR列表接口返回工作项
你可以在拉取请求列表的GET请求中添加$expand=workItems查询参数,让接口直接返回每个PR关联的工作项信息(或ID),无需逐个调用单独的工作项接口。
请求示例:
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?$expand=workItems&api-version=7.1-preview.1
返回结果里,每个拉取请求对象会包含一个workItems数组,里面包含关联工作项的核心信息(比如id、url、title等)。如果只需要ID,直接提取数组中每个元素的id字段即可。
方案2:使用批量请求(Batching)打包多个工作项查询
如果需要获取工作项的更多详细信息,或者$expand无法满足需求,可以用Azure DevOps的批量请求功能,将多个单个PR的工作项查询打包成一个HTTP请求发送,大幅减少网络往返次数。
请求示例:
发送POST请求到:
POST https://dev.azure.com/{organization}/{project}/_apis/batch?api-version=7.1-preview.1
请求体(Content-Type: application/json):
{ "requests": [ { "method": "GET", "url": "/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId1}/workitems?api-version=7.1-preview.1" }, { "method": "GET", "url": "/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId2}/workitems?api-version=7.1-preview.1" } // 最多可添加约200个请求,具体限制以Azure DevOps官方为准 ] }
批量请求会返回一个responses数组,对应每个子请求的结果,你可以从中提取每个PR的工作项数据。
注意事项
- 确保使用的API版本一致(推荐保持7.1-preview.1或更高兼容版本)
- 你的账号需要拥有读取拉取请求和工作项的权限
- 批量请求的子请求数量存在上限,建议控制在200个以内,避免请求被拒绝
内容的提问来源于stack exchange,提问作者hakanaltindis
相关产品推荐
相关产品推荐

