自动完成
可以使用 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 方法 GET
和 HEAD
。
搜索包 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 | 否 | true 或 false 决定是否包含预发行包 |
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 | 是 | 匹配项的总数,不考虑 skip 和 take |
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 | 否 | true 或 false 决定是否包含预发行包 |
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"
]
}