可以使用 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"
]
}