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没有一个