如何在无Query ID的情况下通过API在AzureDevOps中创建查询
解决Azure DevOps REST API创建查询的
{query}参数疑问 你看到的文档示例里的{query}参数不是新查询的ID,而是用来指定新查询要存放的父查询/文件夹的路径或ID——API需要明确知道你要把查询创建在哪个目录下,所以这个位置不能留空。
正确的参数填写方式
{query}支持两种取值:
- 父文件夹的URL编码路径:比如要在个人查询根目录创建,就填
My%20Queries(URL编码后的My Queries);如果要放在个人查询下的子文件夹Bug查询集里,就填My%20Queries/Bug%E6%9F%A5%E8%AF%A2%E9%9B%86(对中文和空格做URL编码)。 - 父文件夹的ID:可以先通过GET请求
https://dev.azure.com/{组织名}/{项目名}/_apis/wit/queries/My%20Queries?api-version=7.0获取个人查询根目录的ID,再把ID填入{query}位置。
根目录创建查询的实际请求示例
如果要在个人查询根目录创建你的"All Bugs"查询,正确的请求路径和体如下:
POST https://dev.azure.com/fabrikam/Fabrikam-Fiber-Git/_apis/wit/queries/My%20Queries?api-version=7.0
请求体:
{ "name": "All Bugs", "wiql": "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Bug' order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc" }
为什么留空会失败
API必须明确查询的存放位置,不填{query}相当于没有指定父容器,服务端无法确定把新查询存在哪里,所以会返回错误。
验证创建结果
创建成功后,你可以通过GET请求https://dev.azure.com/fabrikam/Fabrikam-Fiber-Git/_apis/wit/queries/My%20Queries/All%20Bugs?api-version=7.0获取新查询的详情,其中会包含它的唯一ID。
内容的提问来源于stack exchange,提问作者mr_bean
相关产品推荐
相关产品推荐

