自动完成

可以使用 V3 API 构建包 ID 和版本自动完成体验。 用于创建自动完成查询的资源是在服务索引中找到的 SearchAutocompleteService 资源。

版本控制

使用了以下 @type 值:

值@type 说明
SearchAutocompleteService 初始版本
SearchAutocompleteService/3.0.0-beta SearchAutocompleteService 的别名
SearchAutocompleteService/3.0.0-rc SearchAutocompleteService 的别名
SearchAutocompleteService/3.5.0 包括对 packageType 查询参数的支持

SearchAutocompleteService/3.5.0

此版本引入了对 packageType 查询参数的支持,允许按作者定义的包类型进行筛选。 它完全向后兼容与对 SearchAutocompleteService 的查询。

基 URL

以下 API 的基 URL 是与其中一个上述资源 @type 值关联的 @id 属性的值。 在下面的文档中,将使用占位符基 URL {@id}。 由于基 URL 可能会根据包源中的实现或基础结构更改而更改,因此客户端软件必须从服务索引动态提取它。

HTTP 方法

注册资源中找到的所有 URL 都支持 HTTP 方法 GETHEAD

搜索包 ID

第一个自动完成 API 支持搜索包 ID 字符串的一部分。 如果你要在与 NuGet 包源集成的用户界面中提供包预先输入功能,这非常有用。

仅具有未列出的版本的包不会出现在结果中。

GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}&packageType={PACKAGETYPE}

请求参数

名称 类型 必须 说明
q URL string 要与包 ID 进行比较的字符串
skip URL integer 要跳过的结果数,用于分页
take URL integer 要返回的结果数,用于分页
预发行版 URL boolean truefalse 决定是否包含预发行包
semVerLevel URL string SemVer 1.0.0 版本字符串
packageType URL string 用于筛选包的包类型(已在 SearchAutocompleteService/3.5.0 中添加)

自动完成查询 q 是按服务器实现所定义的方式分析的。 nuget.org 支持查询包 ID 令牌的前缀,这是通过按驼峰式大小写和符号字符分割原始 ID 而产生的片段。

skip 参数默认为 0。

take 参数应为大于零的整数。 服务器实现可以规定一个最大值。

如果没有提供 prerelease,则会排除预发行包。

semVerLevel 查询参数用于选择加入 SemVer 2.0.0 包。 如果排除此查询参数,将只返回具有 SemVer 1.0.0 兼容版本的包 ID(有标准 NuGet 版本控制注意事项,例如版本字符串有 4 个整数部分)。 如果提供了 semVerLevel=2.0.0,将返回 SemVer 1.0.0 和 SemVer 2.0.0 兼容包。 有关详细信息,请参阅 SemVer 2.0.0 对 nuget.org 的支持

packageType 参数用于进一步筛选自动完成结果,仅使至少包含一个包类型的包与包类型名称匹配。 如果提供的包类型不是包类型文档定义的有效包类型,将返回空结果。 如果提供的包类型为空,将不会应用任何筛选器。 也就是说,不将任何值传递给 packageType 参数,这样的行为就像没有传递参数一样。

响应

响应是包含 take 自动完成结果的 JSON 文档。

根 JSON 对象具有以下属性:

名称 类型​​ 必须 说明
totalHits integer 匹配项的总数,不考虑 skiptake
data 字符串的数组 请求所匹配的包 ID

示例请求

GET https://search-sample.nuget.org/autocomplete?q=storage&prerelease=true

请务必按基 URL 部分所提及的方式从服务索引提取基 URL(在此示例中为 https://search-sample.nuget.org/autocomplete)。

示例响应

{
  "totalHits": 571,
  "data": [
    "WindowsAzure.Storage",
    "Storage.Net",
    "CK.Storage",
    "NCL.Storage",
    "DK.Storage",
    "Nine.Storage.Test",
    "Touch.Storage.Aws",
    "StorageAPIClient",
    "StorageAccess",
    "Storage.Net.Microsoft.Azure.Storage",
    "UnofficialAzure.StorageClient",
    "StorageAccess12",
    "AWSSDK.StorageGateway",
    "StorageExtensions",
    "Cloud.Storage",
    "lighthouse.storage",
    "ZU.Storage.Redis",
    "Magicodes.Storage",
    "Masticore.Storage",
    "hq.storage"
  ]
}

枚举包版本

使用以前的 API 发现包 ID 后,客户端可以使用自动完成 API 来枚举提供的包 ID 的包版本。

未列出的包版本不会出现在结果中。

GET {@id}?id={ID}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}

请求参数

名称 类型 必须 说明
id URL string 要提取其版本的包 ID
预发行版 URL boolean truefalse 决定是否包含预发行包
semVerLevel URL string SemVer 2.0.0 版本字符串

如果没有提供 prerelease,则会排除预发行包。

semVerLevel 查询参数用于选择加入 SemVer 2.0.0 包。 如果排除此查询参数,将只返回 SemVer 1.0.0 版本。 如果提供了 semVerLevel=2.0.0,将返回 SemVer 1.0.0 和 SemVer 2.0.0 版本。 有关详细信息,请参阅 SemVer 2.0.0 对 nuget.org 的支持

响应

响应是 JSON 文档,其中包含提供的包 ID 的所有包版本,并按给定的查询参数进行筛选。

根 JSON 对象具有以下属性:

名称 类型​​ 必须 备注
data 字符串的数组 请求所匹配的包版本

如果查询字符串中提供了 semVerLevel=2.0.0,则 data 数组中的包版本可能包含 SemVer 2.0.0 生成元数据(例如 1.0.0+metadata)。

示例请求

GET https://api-v2v3search-0.nuget.org/autocomplete?id=nuget.protocol&prerelease=true

示例响应

{
  "data": [
    "4.3.0-preview3-4168",
    "4.3.0-preview4",
    "4.3.0-rtm-4324",
    "4.3.0",
    "4.4.0-preview3-4475",
    "4.4.0"
  ]
}