从 NuGetV3 API 获取包
本文关键字:获取 API NuGetV3 | 更新日期: 2023-09-27 18:31:29
我有兴趣用 non-.NET 语言为 NuGet v3 API 编写客户端库。
获取包需要哪些请求,响应是什么样的?
即
获取 {包版本}获取 {包版本}
您还可以链接到涵盖此方案的官方文档吗?
下面是官方的 NuGet V3 API 文档。该 API 由多个协议组成,包括:
- PackageBaseAddress - 包含实际包及其清单文件的存储区(
nuspec
)。 - 服务索引 - 客户端用于发现 NuGet 服务
- 搜索服务 - 客户端用于搜索 NuGet 包
- 注册 - 基于 json-LD 的结构,用于存储包的元数据。这包括包的内容、依赖项、描述等...
例如,假设您要下载包"Newtonsoft。杰森":
- 获取
- 服务索引:"获取 https://api.nuget.org/v3/index.json
响应包含 PackageBaseAddress 的地址(又名,错误地作为平面容器,因为它是分层的而不是平面:)):
{
"@id": "https://api.nuget.org/v3-flatcontainer/",
"@type": "PackageBaseAddress/3.0.0",
"comment": "Base URL of Azure storage where NuGet package registration info for DNX is stored, in the format https://api.nuget.org/v3-flatcontainer/{id-lower}/{version-lower}.{version-lower}.nupkg"
},
- 使用@id提供的 uri 作为基本 uri 列出所需包的版本:
GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json
,请注意此 URI 可能会更改,并且不是 API 的一部分 - 使用相同的基本 uri 下载包:
GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/6.0.4/newtonsoft.json.6.0.4.nupkg
你可能还需要查看 NuGet 客户端。客户端的源代码是这里;你需要从 NuGet.CommandLine 项目开始,然后沿着堆栈向下走。