Azure DevOps REST API中Packages命名空间及Package[]类型归属查询
解决Azure DevOps Get Packages API无对应序列化类的问题
- 首先明确:你安装的
Microsoft.TeamFoundationServer.Client包并没有提供这个API对应的Package实体类,因为该API属于Artifact Details模块,官方客户端库并未完全覆盖所有REST API的实体定义。 - 最直接的解决方法是手动定义匹配API响应结构的实体类,根据官方文档里的响应字段编写即可,示例如下:
// 用System.Text.Json特性映射字段,若用Newtonsoft.Json可替换为[JsonProperty] public class Package { [JsonPropertyName("id")] public string Id { get; set; } [JsonPropertyName("name")] public string Name { get; set; } [JsonPropertyName("version")] public string Version { get; set; } [JsonPropertyName("description")] public string Description { get; set; } // 按需添加其他返回字段,比如发布者、创建时间等 [JsonPropertyName("publisher")] public string Publisher { get; set; } [JsonPropertyName("creationDate")] public DateTime CreationDate { get; set; } } - 调用API并反序列化的示例代码:
using System.Net.Http.Headers; using System.Text.Json; using System.Text; var patToken = "你的个人访问令牌"; var orgUrl = "https://dev.azure.com/你的组织名称"; var feedId = "你的Feed ID"; using var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($":{patToken}"))); var response = await client.GetAsync($"{orgUrl}/_apis/artifacts/feed/{feedId}/packages?api-version=7.1-preview.1"); response.EnsureSuccessStatusCode(); var jsonContent = await response.Content.ReadAsStringAsync(); var packages = JsonSerializer.Deserialize<Package[]>(jsonContent); - 注意:如果API返回嵌套结构的字段(比如metadata等),需要对应添加嵌套类来匹配字段结构。
内容的提问来源于stack exchange,提问作者user22548444
相关产品推荐
相关产品推荐

