包内容
可使用 V3 API 生成 URL 来提取任意包的内容(.nupkg 文件)。 用于提取包内容的资源是在 PackageBaseAddress
服务索引中找到的 资源。 此资源还允许发现已列出或未列出的包的所有版本。
此资源通常被称为“包基址”或“平面容器”。
版本控制
使用以下 @type
值:
值@type | 说明 |
---|---|
PackageBaseAddress/3.0.0 | 初始版本 |
基 URL
以下 API 的基 URL 是与其中一个上述资源 @type
值关联的 @id
属性的值。 在下面的文档中,将使用占位符基 URL {@id}
。 由于基 URL 可能会根据包源中的实现或基础结构更改而更改,因此客户端软件必须从服务索引动态提取它。
HTTP 方法
包内容资源中找到的所有 URL 均支持 HTTP 方法 GET
和 HEAD
。
枚举包版本
如果客户端知道包 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_ID
和 LOWER_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>