| title | 自动完成,NuGet API |
|---|---|
| description | 搜索自动完成服务支持对包 Id 和版本进行交互式发现。 |
| author | joelverhagen |
| ms.author | jver |
| ms.date | 10/26/2017 |
| ms.topic | reference |
| ms.reviewer | kraigb |
| ms.openlocfilehash | f574849bf99cd4da4eefd55c3dd5a0648042f0c1 |
| ms.sourcegitcommit | 7e9c0630335ef9ec1e200e2ee9065f702e52a8ec |
| ms.translationtype | MT |
| ms.contentlocale | zh-CN |
| ms.lasthandoff | 06/24/2020 |
| ms.locfileid | 85292288 |
可以使用 V3 API 构建包 ID 和版本自动完成体验。 用于使自动完成查询的资源是 SearchAutocompleteService 在服务索引中找到的资源。
使用以下 @type 值:
| @type 值 | 备注 |
|---|---|
| SearchAutocompleteService | 初始版本 |
| SearchAutocompleteService/3.0.0-beta | 别名SearchAutocompleteService |
| SearchAutocompleteService/3.0.0-rc | 别名SearchAutocompleteService |
| SearchAutocompleteService/3.5。0 | 支持 packageType 查询参数 |
此版本引入了对 packageType 查询参数的支持,允许按作者定义的包类型进行筛选。 它完全向后兼容的查询 SearchAutocompleteService 。
以下 Api 的基 URL 是 @id 与上述某个资源值关联的属性的值 @type 。 在下面的文档中,将使用占位符基 URL {@id} 。
注册资源中找到的所有 Url 都支持 HTTP 方法 GET 和 HEAD 。
第一个自动完成 API 支持搜索包 ID 字符串的一部分。 如果要在与 NuGet 包源集成的用户界面中提供包 typeahead 功能,这非常有用。
只有未列出的版本的包将不会出现在结果中。
GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}&packageType={PACKAGETYPE}
| 名称 | 在 | 类型 | 必需 | 备注 |
|---|---|---|---|---|
| q | 代码 | 字符串 | 否 | 要与包 Id 进行比较的字符串 |
| skip | 代码 | integer | 否 | 要跳过的结果数,用于分页 |
| take | 代码 | integer | 否 | 要返回的结果数,用于分页 |
| prerelease | 代码 | boolean | 否 | true或 false 确定是否包括预发布包 |
| semVerLevel | 代码 | 字符串 | 否 | SemVer 1.0.0 版本字符串 |
| packageType | 代码 | 字符串 | 否 | 用于筛选包的包类型(添加到中 SearchAutocompleteService/3.5.0 ) |
自动完成查询按 q 服务器实现所定义的方式进行分析。 nuget.org 支持查询包 ID 令牌的前缀,该前缀是由拆分以大小写字符和符号字符为原始而生成的 ID 的组成部分。
skip参数默认为0。
take参数应为大于零的整数。 服务器实现可能会施加最大值。
如果 prerelease 未提供,则将排除预发布包。
semVerLevelQuery 参数用于选择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 support for nuget.org 。
packageType参数用于进一步筛选自动完成结果,以使其仅包含至少一个与包类型名称匹配的包类型的包。
如果所提供的包类型不是包类型文档定义的有效包类型,将返回一个空结果。
如果提供的包类型为空,则不会应用任何筛选器。 换言之,不将值传递给参数的 packageType 行为与未传递参数的行为相同。
响应是最多包含 take 自动完成结果的 JSON 文档。
根 JSON 对象具有以下属性:
| 名称 | 类型 | 必需 | 备注 |
|---|---|---|---|
| totalHits | integer | 是 | 匹配项的总数,忽略 skip 和take |
| data | 字符串数组 | 是 | 请求匹配的包 Id |
GET https://api-v2v3search-0.nuget.org/autocomplete?q=storage&prerelease=true
[!code-JSON autocomplete-id-result.json]
使用以前的 API 发现包 ID 后,客户端可以使用自动完成 API 来枚举提供的包 ID 的包版本。
未列出的包版本将不会出现在结果中。
GET {@id}?id={ID}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}
| 名称 | 在 | 类型 | 必需 | 注释 |
|---|---|---|---|---|
| id | 代码 | 字符串 | 是 | 要提取其版本的包 ID |
| prerelease | 代码 | boolean | 否 | true或 false 确定是否包括预发布包 |
| semVerLevel | 代码 | 字符串 | 否 | SemVer 2.0.0 版本字符串 |
如果 prerelease 未提供,则将排除预发布包。
semVerLevelQuery 参数用于选择 SemVer 2.0.0 包。 如果排除此查询参数,则仅返回 SemVer 1.0.0 版本。 如果 semVerLevel=2.0.0 提供了,则将返回 SemVer 1.0.0 和 SemVer 2.0.0 版本。 有关详细信息,请参阅SemVer 2.0.0 support for nuget.org 。
响应是一个 JSON 文档,其中包含所提供的包 ID 的所有包版本,并按给定的查询参数进行筛选。
根 JSON 对象具有以下属性:
| 名称 | 类型 | 必需 | 备注 |
|---|---|---|---|
| data | 字符串数组 | 是 | 与请求匹配的包版本 |
data 1.0.0+metadata 如果 semVerLevel=2.0.0 查询字符串中提供了,则数组中的包版本可能包含 SemVer 2.0.0 生成元数据(例如)。
GET https://api-v2v3search-0.nuget.org/autocomplete?id=nuget.protocol&prerelease=true
[!code-JSON autocomplete-version-result.json]