kcode
kcode

Reputation: 43

API pagination, how to implement page token paging method?

I am working on implementing an API interface for my project.

As i know, there are different forms to make pagination through the results, like the following:

https://example.com/api/purchaseorders?page=2&pagesize=25  

But, i see many APIs like google use a different approach, in which they use a "pageToken" to let the user move between the pages of results, for example:

https://example.com/api/purchaseorders?pagesize=25&pageToken=ClkKHgoRc291cmNlX2NyZWF0ZWRfYXQSCQjA67Si5sr

So instead of page=2 they used pageToken=[token].

It is not clear for me the idea of pageToken and how to implement it.

It will be helpful if you guide me to any resources so i can get more knowledge.

Thank you.

Upvotes: 4

Views: 2312

Answers (1)

apokryfos
apokryfos

Reputation: 40681

Here's a very simple standalone example using the filesystem as a keyvalue store (since a filesystem will always be available).

$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);

Upvotes: 1

Related Questions