根据graphApi的文档:
基于游标的分页
基于游标的分页是最有效的分页方法,应尽可能使用。一个 cursor指的是一个标记特定字符的随机字符串 数据列表中的项目。除非删除此项,否则光标将 始终指向列表的相同部分,但如果是,则无效 项目已删除。因此,您的应用不应存储任何旧游标 或者假设它们仍然有效。
当读取支持光标分页的边缘时,您将看到 遵循JSON响应:
{
"data": [
... Endpoint data is here
],
"paging": {
"cursors": {
"after": "MTAxNTExOTQ1MjAwNzI5NDE=",
"before": "NDMyNzQyODI3OTQw"
},
"previous": "https://graph.facebook.com/me/albums?limit=25&before=NDMyNzQyODI3OTQw"
"next": "https://graph.facebook.com/me/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE="
}
}
但我不知道这里发生了什么,任何人都可以指出我们如何做基于光标的分页?我通过传递Max_id
做了类似的事情,但在这里并非如此
这就是我第一次打电话的方式
accessKey = "\(appID)|\(appSecret)"
let connection = GraphRequestConnection()
let request = GraphRequest.init(graphPath:"/myPageName/posts", parameters: [ "access_token" : accessKey, "fields" : "message,full_picture,created_time,story,type,permalink_url" , "limit": "10"], accessToken: nil, httpMethod: .GET, apiVersion: "2.8")
connection.add(request) { httpResponse, result in
switch result {
case .success(let response):
//FETCHED DATA HERE///
case .failed(let error):
print("Graph Request Failed: \(error)")
}
}
connection.start()
答案 0 :(得分:0)
(代表OP发布)。
在参数中传递偏移完成了工作。
答案 1 :(得分:0)
For this lets first understand Cursor paging with an example :
假设我们想要从最近的用户分页到最老的用户。当客户端第一次请求时,假设我们通过查询选择第一页:
SELECT * FROM users
WHERE team_id = %team_id
ORDER BY id DESC
LIMIT %limit
限制 等于限制加一,以获取比客户端指定的计数多一个结果。额外结果不会在结果集中返回,但我们使用值的ID作为 next_cursor 。
服务器的响应是:
{
"users": [...],
"next_cursor": "1234", # the user id of the extra result
}
然后客户端会在第二个请求中提供 next_cursor 作为游标。
SELECT * FROM users
WHERE team_id = %team_id
AND id <= %cursor
ORDER BY id DESC
LIMIT %limit
回到Facebook实施:顾名思义 next 光标将为您提取下一组结果和 previous 光标将获取上一组结果。
如果您仍然无法理解游标及其使用原因,可以查看此article。上面的例子引用了相同的内容。