包内容

可使用 V3 API 生成 URL 来提取任意包的内容(.nupkg 文件)。 用于提取包内容的资源是在 PackageBaseAddress 服务索引中找到的 资源。 此资源还允许发现已列出或未列出的包的所有版本。

此资源通常被称为“包基址”或“平面容器”。

版本控制

使用以下 @type 值:

值@type 说明
PackageBaseAddress/3.0.0 初始版本

基 URL

以下 API 的基 URL 是与其中一个上述资源 @type 值关联的 @id 属性的值。 在下面的文档中,将使用占位符基 URL {@id}。 由于基 URL 可能会根据包源中的实现或基础结构更改而更改,因此客户端软件必须从服务索引动态提取它。

HTTP 方法

包内容资源中找到的所有 URL 均支持 HTTP 方法 GETHEAD

枚举包版本

如果客户端知道包 ID 并想发现包源已提供的包版本,客户端则可构造可预测 URL 来枚举所有包版本。 此列表将用作下方提及的包内容 API 的“目录列表”。

注意

此列表包含已列出和未列出的包版本。

GET {@id}/{LOWER_ID}/index.json

请求参数

名称 类型 必须 说明
LOWER_ID URL string 小写的包 ID

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

响应

如果包源没有所提供包 ID 的版本,则会返回 404 状态代码。

如果包源有一个或多个版本,则会返回 200 状态代码。 响应正文是具有以下属性的 JSON 对象:

名称 类型​​ 必须 说明
versions 字符串的数组 可用版本

versions 数组中的字符串均为小写的已规范化 NuGet 版本字符串。 版本字符串不含任何 SemVer 2.0.0 生成元数据。

其目的在于:在此数组中找到的版本字符串可逐字用于在以下终结点中找到的 LOWER_VERSION 令牌。

示例请求

GET https://api.nuget.org/v3-flatcontainer/owin/index.json

请务必按基 URL 部分所提及的方式从服务索引提取基 URL(在此示例中为 https://api.nuget.org/v3-flatcontainer/)。

示例响应

{
  "versions": [
    "0.5.0",
    "0.7.0",
    "0.11.0",
    "0.12.0",
    "0.14.0",
    "1.0.0"
  ]
}

下载包内容 (.nupkg)

如果客户端知道包 ID 和版本并想下载包内容,则只需构造以下 URL:

GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.{LOWER_VERSION}.nupkg

请求参数

名称 类型 必须 说明
LOWER_ID URL string 小写的包 ID
LOWER_VERSION URL string 已规范化的小写包版本

LOWER_IDLOWER_VERSION 均使用 .NET 的以下方法所实现的规则来小写化:System.String.ToLowerInvariant() 方法。

LOWER_VERSION 是使用 NuGet 的版本规范化规则进行规范化后的所需包版本。 这意味着,在此情况下必须排除 SemVer 2.0.0 规范所允许的生成元数据。

响应正文

如果包源上存在此包,则返回 200 状态代码。 响应正文将作为包内容本身。

如果包源上不存在此包,则返回 404 状态代码。

示例请求

GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/9.0.1/newtonsoft.json.9.0.1.nupkg

请务必按基 URL 部分所提及的方式从服务索引提取基 URL(在此示例中为 https://api.nuget.org/v3-flatcontainer/)。

示例响应

二进制流为 Newtonsoft.Json 9.0.1 的 .nupkg。

下载包清单 (.nuspec)

如果客户端知道包 ID 和版本并想下载包清单,则只需构造以下 URL:

GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.nuspec

请求参数

名称 类型 必须 说明
LOWER_ID URL string 小写的包 ID
LOWER_VERSION URL string 已规范化的小写包版本

LOWER_ID and LOWER_VERSION 均使用 .NET 的 System.String.ToLowerInvariant() 方法所实现的规则来小写化。

LOWER_VERSION 是使用 NuGet 的版本规范化规则进行规范化后的所需包版本。 这意味着,在此情况下必须排除 SemVer 2.0.0 规范所允许的生成元数据。

响应正文

如果包源上存在此包,则返回 200 状态代码。 响应正文将作为包清单,而它是相应 .nupkg 中包含的 .nuspec。 .nuspec 是一个 XML 文档。

如果包源上不存在此包,则返回 404 状态代码。

示例请求

GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/6.0.4/newtonsoft.json.nuspec

请务必按基 URL 部分所提及的方式从服务索引提取基 URL(在此示例中为 https://api.nuget.org/v3-flatcontainer/)。

示例响应

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>Newtonsoft.Json</id>
    <version>6.0.4</version>
    <title>Json.NET</title>
    <authors>James Newton-King</authors>
    <owners>James Newton-King</owners>
    <licenseUrl>https://raw.github.com/JamesNK/Newtonsoft.Json/master/LICENSE.md</licenseUrl>
    <projectUrl>http://james.newtonking.com/json</projectUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Json.NET is a popular high-performance JSON framework for .NET</description>
    <language>en-US</language>
    <tags>json</tags>
  </metadata>
</package>