在列表中分页
Support API有几个返回项目列表的端点,比如票据和用户。本文解释了如何对列表进行分页。
由于带宽的原因,API不会一次返回大量的记录集。它将结果分解成更小的子集并返回页面.每页的项数因端点而异。tickets和users端点每页返回100个项目,而articles端点每页返回30个项目。
您必须对结果进行分页以获得所有数据。本文解释了基本分页的工作原理。
本文中讨论的分页方法由以下Zendesk api支持:亚博
- 支持API
- 帮助中心API
- 讨论API
其他api的分页细节可能不同,但逻辑是相同的。
另请参阅分页在Zendesk REST API文档的介绍中。亚博
免责声明: 亚博Zendesk提供本文仅用于教学目的。亚博Zendesk不支持或保证该代码。亚博Zendesk也不能提供对第三方技术(如Python和Perl)的支持。
选择分页方法
Support API有两种分页方法:偏移量和基于指针的分页方法。
在偏移量分页中,Zendesk保持记录计数,亚博并在达到特定数量的记录(偏移量)后“翻页”。
在基于指针的分页中,Zendesk使用记录集中的指针来跟亚博踪下一个记录。指针在记录集中移动,就像文本编辑器中的光标一样,指示您键入的下一个单词将出现在哪里。亚博Zendesk根据指针在记录集中的位置进行分页。
亚博Zendesk建议使用基于游标的分页功能。它目前仅对Support API中的某些列表端点可用,包括票列表而且用户列表.如果API文档对于特定的列表端点没有指定基于游标的分页可用,则该资源只支持偏移量分页。
另请参阅理解偏移分页的局限性.
使用偏移量方法添加分页
支持、帮助中心和Talk api中的所有列表端点都支持偏移分页方法。
默认情况下,列表端点返回的JSON对象包含next_page
属性与结果的下一页的URL(如果有的话)。例子:
“用户”:[...],
“next_page”:“https://example.亚博zendesk.com/api/v2/users.json?page=2”,
...
如果没有下一页,则值为零
.
“用户”:[...],
“next_page”:零,
...
您的代码应该检查next_page
属性在调用任何列表端点时。如果为null,则可以继续。如果不为空,它应该使用指定的URL发出另一个请求。
下面的伪代码是对项进行分页的常见模式:
url=“https://example.亚博zendesk.com/api/v2/users.json”
而url是不是什么:
响应=请求(url)
//处理响应
url=响应(“next_page”)
不要在下一页请求之间等待太长时间,因为数据的实时性可能会导致分页结果不准确。看到理解偏移分页的局限性.
Python示例
下面是一个使用第三方的Python示例请求图书馆:
url=“https://example.亚博zendesk.com/api/v2/help_center/sections/200646/articles.json”
而url:
响应=请求.得到(url)
数据=响应.json()
为文章在数据[“文章”]:
打印(文章[“标题”])
url=数据[“next_page”]
获取并处理结果的第一页之后,脚本检查next_page
财产。如果值为null (Python认为为假),则循环停止。
使用基于指针的方法添加分页
默认情况下,所有列表端点的分页方法都是偏移量方法。Support API中的某些列表端点支持基于游标的分页方法。例子包括票列表而且用户列表.如果API文档对于特定的列表端点没有指定基于游标的分页可用,则该资源只支持偏移量分页。
当使用此方法时,请求返回一个元
对象和链接
对象连同请求的记录列表。的链接
对象具有下一个
属性与结果的下一页的URL(如果有的话)。例子:
“用户”:[...],
“元”:{
“has_more”:真正的,
“after_cursor”:“eyJvIjoibmljZV9pZCIsInYiOiJhV2tCQUFBQUFBQUEifQ = = ",
“before_cursor”:“eyJvIjoibmljZV9pZCIsInYiOiJhUzRCQUFBQUFBQUEifQ = = "
},
“链接”:{
“下一个”:“https://example.亚博zendesk.com/api/v2/users.json?page(大小)= 100和页面(后)= eyJvIjoibmljZV9pZCIsInYiOiJhV2tCQUFBQUFBQUEifQ = = ",
“上一页”:“https://example.亚博zendesk.com/api/v2/users.json?page(大小)= 100和页面(前)= eyJvIjoibmljZV9pZCIsInYiOiJhUzRCQUFBQUFBQUEifQ = = "
}
...
请注意:示例中的url值将在实际使用中进行url编码。
要使用基于游标的分页,必须包含页面(大小)
查询参数。例子:
https://example.亚博zendesk.com/api/v2/users.json?page[大小]=One hundred.
下面的伪代码是使用基于游标的分页方式对项进行分页的常见模式:
url=“https://example.亚博zendesk.com/api/v2/users.json?page(大小)= 100”
而url是不是什么:
响应=请求(url)
//处理响应
如果响应(“meta.has_more”)是真正的:
url=响应(“links.next”)
其他的:
url=没有什么
一直分页直到has_more
的财产元
对象为false,则停止。注意,如果您碰巧指定了页面(大小)
这就是结果的数目has_more
的财产元
Object将为true。
Python示例
下面是一个使用第三方的Python示例请求图书馆:
身份验证='(电子邮件保护)',“我的密码”
url=“https://example.亚博zendesk.com/api/v2/tickets.json?page(大小)= 100”
而url:
响应=请求.得到(url,身份验证=身份验证)
数据=响应.json()
为票在数据[“门票”]:
打印(票[“id”])
如果数据[“元”][“has_more”]:
url=数据[“链接”][“下一个”]
其他的:
url=没有一个