我正在为我的项目实现API接口。
据我所知,有不同的形式可以通过结果进行分页,如下所示:
https://example.com/api/purchaseorders?page=2&pagesize=25
但是,我看到很多像谷歌这样的API使用不同的方法,他们使用" pageToken"让用户在结果页面之间移动,例如:
https://example.com/api/purchaseorders?pagesize=25&pageToken=ClkKHgoRc291cmNlX2NyZWF0ZWRfYXQSCQjA67Si5sr
因此他们使用page=2
代替pageToken=[token]
。
我不清楚pageToken的概念以及如何实现它。
如果您引导我使用任何资源,这将有所帮助,以便我可以获得更多知识。
谢谢。
答案 0 :(得分:1)
这是一个非常简单的独立示例,使用文件系统作为键值存储(因为文件系统始终可用)。
$requestParameters = [];
if (($token = filter_input(INPUT_GET,"pageToken")) && is_readable("/tmp/$token")) {
$requestParameters = file_get_contents("/tmp/$token");
} else {
$requestParameters = [
"q" => filter_input(INPUT_GET,"q"),
"pageSize" => filter_input(INPUT_GET,"pageSize",FILTER_VALIDATE_INT),
"page" => filter_input(INPUT_GET,"page",FILTER_VALIDATE_INT)
];
}
$nextPageRequestParameters = $requestParameters;
$nextPageRequestParameters["page"]++;
$nextPageToken = md5(serialize($nextPageRequestParameters)); //This is not ideal but at least people can't guess it easily.
file_put_contents("/tmp/$nextPageToken", serialize($nextPageRequestParameters));
//Do request using $requestParameters
$result = [ "nextPageToken" => $nextPageToken, "data" => $resultData ];
echo json_encode($result);