分页结果

图谱 API 概览中包含图谱 API 术语和结构等基本信息。本文将详细介绍 API 请求的结果。

遍历分页结果

在向节点或连线发出 API 请求时,您通常不会在单个响应中收到该请求的全部结果。这是因为某些响应可能包含数千个对象,因此大多数响应都将默认分页。

基于游标的分页

基于游标的分页是最有效的分页方法,建议您尽可能使用这种方法。游标是一个随机字符串,用于标记数据列表中的特定项目。游标会始终指向项目,但如果该项目遭到删除或移除,游标即会失效。因此,您的应用不应存储游标,或假定游标日后依旧有效。

读取支持游标分页的连线时,您将看到以下 JSON 响应:

{
  "data": [
     ... Endpoint data is here
  ],
  "paging": {
    "cursors": {
      "after": "MTAxNTExOTQ1MjAwNzI5NDE=",
      "before": "NDMyNzQyODI3OTQw"
    },
    "previous": "https://graph.facebook.com/{your-user-id}/albums?limit=25&before=NDMyNzQyODI3OTQw"
    "next": "https://graph.facebook.com/{your-user-id}/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE="
  }
}

游标分页的连线支持以下参数:

  • before:这是指向已返回的数据页面开头的游标。
  • after:这是指向已返回的数据页面末尾的游标。
  • limit:这是可能返回的最大对象数量。由于应用了筛选条件,查询操作返回的结果可能少于 limit 值。如要查看您的查询是否已涵盖整个数据列表,请使用如下所述的方式(不包含 next),而不要依赖小于 limit 值的结果数。例如,如果您将 limit 设置为 10 但返回 9 个结果,则可能有更多数据可用,但是有一个项目由于隐私筛选条件而被删除。为提升性能,也可为某些连线设置最大的 limit 值。所有情况下,API 都将返回正确的分页链接。
  • next:将返回下一页数据的图谱 API 端点。如果未包含,则显示的是最后一页数据。根据分页的可见性和隐私,页面可能为空,但包含 next 分页链接。next 链接不再出现时,应停止分页。
  • previous:将返回上一页数据的图谱 API 端点。如果未包含,则显示的是第一页数据。

请勿存储游标。如果添加或删除了项目,游标可能很快就会失效。

基于时间的分页

时间分页使用指向数据列表中特定时间的 Unix 时间戳在结果数据中导航。

使用采用时间分页的端点时,您将看到以下 JSON 响应:

{
  "data": [
     ... Endpoint data is here
  ],
  "paging": {
    "previous": "https://graph.facebook.com/{your-user-id}/feed?limit=25&since=1364849754",
    "next": "https://graph.facebook.com/{your-user-id}/feed?limit=25&until=1364587774"
  }
}

基于时间分页的连线支持以下参数:

  • until:Unix 时间戳或指向基于时间的数据范围末尾的 strtotime 数据值。
  • since:Unix 时间戳或指向基于时间的数据范围开头的 strtotime 数据值。
  • limit:这是可能返回的最大对象数量。由于应用了筛选条件,查询操作返回的结果可能少于 limit 值。如要查看您的查询是否已涵盖整个数据列表,请使用如下所述的方式(不包含 next),而不要依赖小于 limit 值的结果数。例如,如果您将 limit 设置为 10 但返回 9 个结果,则可能有更多数据可用,但是有一个项目由于隐私筛选条件而被删除。为提升性能,也可为某些连线设置最大的 limit 值。所有情况下,API 都将返回正确的分页链接。
  • next:将返回下一页数据的图谱 API 端点。
  • previous:将返回上一页数据的图谱 API 端点。

如要获得一致的结果,需要指定 sinceuntil 参数。此外,建议时间差异最大为 6 个月。

基于偏移的分页

如果时间顺序对您不重要,且您只需要返回特定数量的对象,则可以使用偏移分页。只有连线不支持基于游标或时间的分页时,才能使用这种分页方法。

基于偏移分页的连线支持以下参数:

  • offset:这将按指定的数字偏移每个页面的开头。
  • limit:这是可能返回的最大对象数量。由于应用了筛选条件,查询操作返回的结果可能少于 limit 值。如要查看您的查询是否已涵盖整个数据列表,请使用如下所述的方式(不包含 next),而不要依赖小于 limit 值的结果数。例如,如果您将 limit 设置为 10 但返回 9 个结果,则可能有更多数据可用,但是有一个项目由于隐私筛选条件而被删除。为提升性能,也可为某些连线设置最大的 limit 值。所有情况下,API 都将返回正确的分页链接。
  • next:将返回下一页数据的图谱 API 端点。如果未包含,则显示的是最后一页数据。根据分页的可见性和隐私,页面可能为空,但包含 next 分页链接。next 链接不再出现时,应停止分页。
  • previous:将返回上一页数据的图谱 API 端点。如果未包含,则显示的是第一页数据。

请注意,如果正在分页的项目列表添加了新的对象,每个基于偏移的页面的内容都将发生更改。

并非所有 API 调用都支持基于偏移的分页。如要获得一致的结果,建议您使用我们在响应中返回的 previous/next 链接分页。

如果对象返回很多项目(例如数以万计的评论),则您在分页时可能会遭到限制。如果您的应用达到了游标限制,API 将返回以下错误提示:

{
  "error": {
    "message": "(#100) The After Cursor specified exceeds the max limit supported by this endpoint",
    "type": "OAuthException",
    "code": 100
  }
}

后续步骤

您现已对图谱 API 有了更深入的了解,请访问我们的图谱探索工具指南,在无需编写代码的情况下探索图谱;您也可访问常见用途查看最常见的操作任务;或访问可用的 SDK