分页的保留属性名
以下属性位于 data 对象中,用于帮助在项目列表中分页。部分语言和概念借鉴自 OpenSearch 规范 。
以下分页属性允许多种分页方式,包括:
- 上一页/下一页分页 - 允许用户在列表中一次前进或后退一页。
nextLink和previousLink属性(在下面的”链接的保留属性名”部分中描述)用于此分页方式。 - 基于索引的分页 - 允许用户直接跳转到项目列表中的特定项目位置。例如,要从第 200 个项目开始加载 10 个项目,开发者可以将用户指向包含查询字符串
?startIndex=200的 URL。 - 基于页码的分页 - 允许用户直接跳转到项目中的特定页面。这类似于基于索引的分页,但省去了开发者计算新页面项目索引的额外步骤。例如,开发者可以跳转到第 20 页,而不是跳转到第 200 个项目。基于页码分页期间的 URL 可以使用查询字符串
?page=1或?page=20。pageIndex和totalPages属性用于此分页方式。
如何使用这些属性实现分页的示例可以在本指南末尾找到。
data.currentItemCount
属性值类型:integer | 父级:data
此结果集中的项目数量。应等于 items.length,作为便利属性提供。例如,假设开发者请求一组搜索项目,并要求每页 10 个项目。该搜索的总项目集共有 14 个项目。第一页将包含 10 个项目,因此 itemsPerPage 和 currentItemCount 都等于”10”。下一页将包含剩余的 4 个项目;itemsPerPage 仍为”10”,但 currentItemCount 将为”4”。
示例:
{
"data": {
// "itemsPerPage" 不一定等于 "currentItemCount"
"itemsPerPage": 10,
"currentItemCount": 4
}
}data.itemsPerPage
属性值类型:integer | 父级:data
结果中的项目数量。这不一定是 data.items 数组的大小;如果我们正在查看最后一页项目,data.items 的大小可能小于 itemsPerPage。但 data.items 的大小不应超过 itemsPerPage。
示例:
{
"data": {
"itemsPerPage": 10
}
}data.startIndex
属性值类型:integer | 父级:data
data.items 中第一个项目的索引。为保持一致性,startIndex 应该从 1 开始。例如,第一组项目中的第一个项目的 startIndex 应为 1。如果用户请求下一组数据,startIndex 可能为 10。
示例:
{
"data": {
"startIndex": 1
}
}data.totalItems
属性值类型:integer | 父级:data
此集合中可用的项目总数。例如,如果用户有 100 篇博客文章,响应可能只包含 10 个项目,但 totalItems 将为 100。
示例:
{
"data": {
"totalItems": 100
}
}data.pagingLinkTemplate
属性值类型:string | 父级:data
一个 URI 模板,指示用户如何计算后续分页链接。URI 模板还有一些保留变量名:{index} 表示要加载的项目编号,{pageIndex} 表示要加载的页码。
示例:
{
"data": {
"pagingLinkTemplate": "https://www.google.com/search/hl=en&q=chicago+style+pizza&start={index}&sa=N"
}
}data.pageIndex
属性值类型:integer | 父级:data
当前项目页面的索引。为保持一致性,pageIndex 应该从 1 开始。例如,第一页项目的 pageIndex 为 1。pageIndex 也可以从基于项目的分页属性中计算:pageIndex = floor(startIndex / itemsPerPage) + 1。
示例:
{
"data": {
"pageIndex": 1
}
}data.totalPages
属性值类型:integer | 父级:data
结果集中的总页数。totalPages 也可以从上面基于项目的分页属性中计算:totalPages = ceiling(totalItems / itemsPerPage)。
示例:
{
"data": {
"totalPages": 50
}
}