从 NuGetV3 API 获取包

本文关键字:获取 API NuGetV3 | 更新日期: 2023-09-27 18:31:29

我有兴趣用 non-.NET 语言为 NuGet v3 API 编写客户端库。

获取包需要哪些请求,响应是什么样的?

获取 {包版本}获取 {包版本}

您还可以链接到涵盖此方案的官方文档吗?

从 NuGetV3 API 获取包

下面是官方的 NuGet V3 API 文档。该 API 由多个协议组成,包括:

  1. PackageBaseAddress - 包含实际包及其清单文件的存储区(nuspec)。
  2. 服务索引 - 客户端用于发现 NuGet 服务
  3. 搜索服务 - 客户端用于搜索 NuGet 包
  4. 注册 - 基于 json-LD 的结构,用于存储包的元数据。这包括包的内容、依赖项、描述等...

例如,假设您要下载包"Newtonsoft。杰森":

    获取
  1. 服务索引:"获取 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"
},
  1. 使用@id提供的 uri 作为基本 uri 列出所需包的版本:GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json ,请注意此 URI 可能会更改,并且不是 API 的一部分
  2. 使用相同的基本 uri 下载包:GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/6.0.4/newtonsoft.json.6.0.4.nupkg

你可能还需要查看 NuGet 客户端。客户端的源代码是这里;你需要从 NuGet.CommandLine 项目开始,然后沿着堆栈向下走。