图谱 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 端点。如要获得一致的结果,需要指定 since
和 until
参数。此外,建议时间差异最大为 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 } }