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}

请求参数

Name In 类型 必选 注释
ID URL 字符串 是的 为请求验证范围密钥的包标识符
VERSION URL 字符串 包版本
X-NuGet-ApiKey Header 字符串 是的 例如: 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}

请求参数

Name In 类型 必选 注释
ID URL 字符串 是的 为其请求校验范围密钥的包标识符
VERSION URL 字符串 包版本
X-NuGet-ApiKey Header 字符串 是的 例如: X-NuGet-ApiKey: {VERIFY_SCOPE_KEY}

注释

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

响应

状态代码 Meaning
200 API 密钥有效
403 API 密钥无效或无权推送到该包。
404 ID引用的包不存在,VERSION(可选) 也不存在。