Предположим, у меня есть REST API, который поддерживает разбиение на страницы (и фильтрацию). После выполнения запроса GET к myapi.com/api/users он возвращает что-то вроде этого:
{
total: 100
data: . . .
first_page_url: "/?page=1"
from: 0
next_page_url: "/?page=2"
path: "/"
per_page: 10
prev_page_url: null
to: 10
}
А затем в моей клиентской библиотеке PHP есть что-то похожее на эту функцию для функции, которая выполняет этот запрос и возвращает ответ JSON в виде ассоциативного массива:
public function users($page = 1, $verified = null, $admin = null, $joined = null, $active_until = null, $banned_until = null, $referral_code = null) {
. . .
}
Как лучше всего получить следующий результат?
Я предполагаю что-то вроде этого:
$users = [];
$request = users(); // gets the first page
while ($request) {
$request = next_users();
array_push($users, $request['data']);
}
Проблема в том, что я понятия не имею, с чего начать, когда дело доходит до помещения результата users () в next_users () при сохранении любых значений фильтра (необязательных параметров users ()), причем при элегантном выполнении. Я попытался осмотреться, но я не могу найти много результатов API-клиентов, обрабатывающих нумерацию страниц. Как показано выше, идеальным сценарием будет способность получать следующую страницу результатов, пока не останется ничего с next_users ().