nuget.org 协议

为了与 nuget.org 交互,客户端需要遵循某些协议。 由于这些协议在不断发展,因此客户端必须确定在调用具体 nuget.org API 时使用的协议版本。 这样,nuget.org 就可以通过非中断方式为旧客户端引入更改。

注意

本页记录的 API 特定于 nuget.org,其他 NuGet 服务器实现应该不会引入这些 API。

有关在 NuGet 生态系统中广泛实现的 NuGet API 的信息,请参阅 API 概述

本主题列出了现有的各种协议。

NuGet 协议版本 4.1.0

4.1.0 协议规定了使用验证范围密钥来与除 nuget.org 之外的服务交互,以针对 nuget.org 帐户验证包。 请注意,4.1.0 版本号是一个不透明字符串,但恰好与支持此协议的官方 NuGet 客户端的第一个版本一致。

验证可确保用户创建的 API 密钥只用于 nuget.org,而来自第三方服务的其他确认或验证则通过一次性使用验证范围密钥进行处理。 这些验证范围密钥可用于验证包是否属于 nuget.org 上的特定用户(帐户)。

客户端要求

客户端在进行 API 调用以将包推送到 nuget.org 时,需要客户端来传递以下标头:

X-NuGet-Protocol-Version: 4.1.0

请注意,X-NuGet-Client-Version 标头具有类似的语义,但被保留为仅供官方 NuGet 客户端使用。 第三方客户端应使用 X-NuGet-Protocol-Version 标头和值。

PackagePublish 资源的文档中介绍了推送协议本身。

如果客户端与外部服务交互,并且需要验证包是否属于特定用户(帐户),它应使用以下协议并使用验证范围密钥,而不是来自 nuget.org 的 API 密钥。

用于请求验证范围密钥的 API

此 API 用于获取 nuget.org 作者的验证范围密钥,以验证作者拥有的包。

POST api/v2/package/create-verification-key/{ID}/{VERSION}

请求参数

名称 类型 必须 说明
ID URL string 为其请求验证范围密钥的包标识符
VERSION URL string 包版本
X-NuGet-ApiKey 头文件 string 例如: X-NuGet-ApiKey: {USER_API_KEY}

响应

{
    "Key": "{Verify scope key from nuget.org}",
    "Expires": "{Date}"
}

用于验证验证范围密钥的 API

此 API 用于验证 nuget.org 作者拥有的包的验证范围密钥。

GET api/v2/verifykey/{ID}/{VERSION}

请求参数

名称 类型 必须 说明
ID URL string 为其请求验证范围密钥的包标识符
VERSION URL string 包版本
X-NuGet-ApiKey 头文件 string 例如: X-NuGet-ApiKey: {VERIFY_SCOPE_KEY}

注意

此验证范围 API 密钥在一天后或首次使用时过期,以先发生者为准。

响应

状态代码 含义
200 API 密钥有效
403 API 密钥无效或未授权针对包进行推送
404 IDVERSION(可选)引用的包不存在