如何通过RestAPI从Azure DevOps 2019获取GlobalLists?相关API端点有效性确认
如何通过REST API获取Azure DevOps的全局列表?
首先明确说:你找到的那个端点 GET https://{instance}/{collection}/_apis/work/processes/lists?api-version=5.0-preview.1 并不是用来获取集合级全局列表的——它返回的是和特定工作项进程(比如Agile、Scrum模板)绑定的进程级列表,这类列表只属于该进程对应的项目,不是跨项目的全局列表。
好消息是,Azure DevOps其实有专门的REST API可以直接获取集合级的全局列表,返回JSON格式,完全不用手动解析XML,端点是:
GET https://{instance}/{collection}/_apis/wit/globallists?api-version=7.1-preview.1
(可以根据需要调整api-version,比如用最新的稳定版,目前7.1-preview.1已经是比较成熟的预览版,后续也会有正式版推出)
这个API返回的结构很清晰,示例如下:
{ "count": 1, "value": [ { "name": "SampleGlobalList", "items": [ { "value": "Option A" }, { "value": "Option B" } ] } ] }
如果你还是想用客户端库的方式,之前提到的ExportGlobalLists方法确实需要解析XML,但可以借助序列化工具来简化操作,比如在C#里用XmlSerializer自动映射XML到实体类,不用手动去节点里抠数据:
using Microsoft.TeamFoundation.WorkItemTracking.WebApi; using Microsoft.VisualStudio.Services.Common; using System.Xml.Serialization; using System.IO; // 先定义对应XML结构的实体类 [XmlRoot("gl:globalLists", Namespace = "http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/globallists")] public class GlobalLists { [XmlElement("globalList")] public List<GlobalList> Items { get; set; } } public class GlobalList { [XmlAttribute("name")] public string Name { get; set; } [XmlElement("LISTITEM")] public List<ListItem> ListItems { get; set; } } public class ListItem { [XmlAttribute("value")] public string Value { get; set; } } // 调用方法并解析 var orgUrl = "https://dev.azure.com/your-org"; var collection = "your-collection"; var client = new WorkItemTrackingHttpClient(new Uri($"{orgUrl}/{collection}"), new VssCredentials()); var xmlContent = await client.ExportGlobalListsAsync(); var serializer = new XmlSerializer(typeof(GlobalLists)); using var reader = new StringReader(xmlContent); var globalLists = (GlobalLists)serializer.Deserialize(reader); // 现在可以直接操作globalLists对象了 foreach (var list in globalLists.Items) { Console.WriteLine($"全局列表:{list.Name}"); foreach (var item in list.ListItems) { Console.WriteLine($"- {item.Value}"); } }
最后再帮你区分一下两种列表的差异:
- 集合级全局列表:跨所有项目和进程,是真正意义上的全局列表,用
wit/globallistsAPI获取。 - 进程级列表:属于特定工作项进程,只有使用该进程的项目能看到,用你找到的
processes/listsAPI获取。
内容的提问来源于stack exchange,提问作者Admiral Land
相关产品推荐
相关产品推荐

