NuGet API获取软件包的版本

时间:2019-03-27 14:45:21

标签: api get request nuget

我正在尝试从软件包中获取最新版本(在我的情况下,我将通过StyleCopAnalyzer软件包https://www.nuget.org/packages/StyleCop.Analyzers尝试使用它)。

我的目标是找出此软件包的最新版本,并通过以下get api调用进行尝试:

https://api.nuget.org/v3/registration3/StyleCop.Analyzers/index.json

由于请求中的一些错误,我得到了这个json:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Error>
<Code>BlobNotFound</Code>
<Message>The specified blob does not exist. RequestId:c2c2ffba-701e-0063-0daa-e47670000000 Time:2019-03-27T14:38:14.3708948Z</Message>
</Error>

我在此文档的帮助下创建了此请求:

https://docs.microsoft.com/en-us/nuget/api/overview

预先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

详细介绍@ zivkan的答案,我发现this post对背景环境很有用。

需要特别注意的是NuGet服务器维护者宣布将通过此端点添加对“ semver 2.0”软件包的支持:

今天,从api / v3 / index.json中可以看到两个注册配置单元:

  1. https://api.nuget.org/v3/registration1/
  2. https://api.nuget.org/v3/registration1-gz/

我们将添加第三个:

  1. https://api.nuget.org/v3/registration1-semver2-gz/

对我来说,通过文档并不明显的是,semver2端点也返回了非模拟2 软件包的元数据(根据反思,这与后面的任何软件包都有意义semver 1.0约定与semver 2.0向前兼容)

我已更新代码以不再使用 https://api.nuget.org/v3/registration3/在任何情况下均始终使用 https://api.nuget.org/v3/registration5-gz-semver2

此更改简化了我的验证代码,其中包括package I was looking for (以及其他121个)

Peter K的文件包可以使用以下命令解决:

https://api.nuget.org/v3/registration5-gz-semver2/stylecop.analyzers/index.json

答案 1 :(得分:0)

您提供的网址记录在package metadata page上。讨论URL格式的部分具有以下内容:

  

获取{@id} / {LOWER_ID} /index.json

     

名称为必填项的注释

     

LOWER_ID URL字符串是软件包ID,小写

     

LOWER_ID值是所需的包ID,使用.NET的System.String.ToLowerInvariant()方法实现的规则将其小写。

在页面上有示例URL的其他地方,您还可以看到软件包ID是小写的。

此外,在页面顶部,它还有一个small table about versioning。正如文档所说,使用v3.0.0或v3.4.0注册库将不会返回使用SemVer2版本字符串的软件包。因此,如果要避免缺少软件包版本,应获取RegistrationsBaseUrl/3.6.0和小写的软件包ID:

https://api.nuget.org/v3/registration3-gz-semver2/stylecop.analyzers/index.json