推送和删除

可使用 NuGet V3 API 来推送、删除(或取消列出,具体取决于服务器实现)和重新列出包。 这些操作均基于在服务索引中找到的 PackagePublish 资源。

版本控制

使用以下 @type 值:

值@type 说明
PackagePublish/2.0.0 初始版本

基 URL

以下 API 的基 URL 是包源的服务索引PackagePublish/2.0.0 资源的 @id 属性值。 对于以下文档,将使用 nuget.org 的 URL。 请考虑将 https://www.nuget.org/api/v2/package 用作在服务索引中找到的 @id 值的占位符。

请注意,由于协议相同,因而此 URL 会指向与旧版 V2 推送终结点相同的位置。

HTTP 方法

此资源支持PUTPOSTDELETE HTTP 方法。 有关每个终结点所支持的方法,请参阅下文。

推送包

注意

针对与推送终结点交互,nuget.org 有其他要求

nuget.org 支持使用以下 API 推送新包。 如果已存在具有所提供 ID 和版本的包,nuget.org 将拒绝推送。 其他包源可能支持替换现有包。

PUT https://www.nuget.org/api/v2/package

请求参数

名称 类型 必须 说明
X-NuGet-ApiKey 头文件 string 例如: X-NuGet-ApiKey: {USER_API_KEY}

API 密钥是用户从包源获取并配置到客户端中的不透明字符串。 不会强制使用特定字符串格式,但 API 密钥的长度不应超过 HTTP 标头值的合理大小。

请求正文

请求正文必须采用以下形式:

多部分表单数据

请求标头 Content-Typemultipart/form-data,且请求正文中的第一项是正在推送的 .nupkg 的原始字节数。 多部分正文中的后续项将被忽略。 多部分项的文件名或任意其他标头将被忽略。

响应

状态代码 含义
201、202 已成功推送包
400 提供的包无效
409 已存在具有所提供 ID 和版本的包

成功推送包时,服务器实现会因返回的成功状态代码而有所不同。

删除包

nuget.org 会将包删除请求解释为“取消列出”。 这意味着包仍可用于此包的现有使用者,但它将不再显示在搜索结果或 Web 界面中。 有关此实践的详细信息,请参阅已删除包策略。 其他服务器实现可随意将此信号解释为硬删除、软删除或取消列出。 例如,NuGet.Server(仅支持旧 V2 API 的服务器实现)支持根据配置选项将此请求作为取消列出或硬删除来处理。

DELETE https://www.nuget.org/api/v2/package/{ID}/{VERSION}

请求参数

名称 类型 必须 说明
ID URL string 待删除包的 ID
VERSION URL string 待删除包的版本
X-NuGet-ApiKey 头文件 string 例如: X-NuGet-ApiKey: {USER_API_KEY}

响应

状态代码 含义
204 包已删除
404 不存在具有所提供 IDVERSION 的包

重新列出包

如果包未列出,可使用“重新列出”终结点使该包在搜索结果中再次可见。 此终结点的形状与删除(取消列出)终结点相同,但使用的是 POST HTTP 方法,而不是 DELETE 方法。

如果包已列出,请求仍会成功。

POST https://www.nuget.org/api/v2/package/{ID}/{VERSION}

请求参数

名称 类型 必须 说明
ID URL string 待重新列出包的 ID
VERSION URL string 待重新列出包的版本
X-NuGet-ApiKey 头文件 string 例如: X-NuGet-ApiKey: {USER_API_KEY}

响应

状态代码 含义
200 包现已列出
404 不存在具有所提供 IDVERSION 的包