推送和删除
可使用 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 方法
此资源支持PUT
、POST
和 DELETE
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-Type
为 multipart/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 | 不存在具有所提供 ID 和 VERSION 的包 |
重新列出包
如果包未列出,可使用“重新列出”终结点使该包在搜索结果中再次可见。 此终结点的形状与删除(取消列出)终结点相同,但使用的是 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 | 不存在具有所提供 ID 和 VERSION 的包 |