Как разбить на страницы, используя версию min max - VendHQ - PullRequest
0 голосов
/ 26 июня 2019

Я хочу правильно разбить API VendHQ на страницы. Есть ли пример, который я могу посмотреть, чтобы увидеть, как работает версия min / max?

Я уверен, что это простой цикл PHP, я пробовал несколько вещей, но я не знаю, как лучше всего это сделать. Было бы здорово увидеть фрагмент кода о том, как правильно структурировать его для запроса Vend.

https://docs.vendhq.com/reference/introduction/pagination#api-20

Я ожидаю, что выходные данные будут результатами Vend, которые я могу поместить в свой собственный массив для манипулирования.

1 Ответ

1 голос
/ 26 июня 2019

Давайте попробуем.Я думаю, что у вас уже есть http-клиент, если нет, то вам стоит взглянуть на guzzle или что-то подобное.

В каждом ответе есть параметр max, также вы можете установить afterпараметр в вашем запросе для управления текущей страницей.Не проверял, просто пример, поэтому будьте осторожны:

//initializing guzzle
$guzzle = new GuzzleHttp\Client(['base_uri' => 'http://api.api/api']);
//current max number
$after = 0;
//array for all data
$allData = [];
//loop while collection in response doesn't empty
do {
    //quering current data piece
    $response = $guzzle->request(
        'GET', 
        '/api/2.0/products', 
        ['query' => ['after' => $after]]
    );
    //decoding response
    $responseBody = (string) $response->getBody();
    $decodedResponse = json_decode($responseBody, true);
    //here you can do some operations with $decodedResponse['data']
    //you can store all data to array but this is bad, you can catch 
    //Allowed memory size of ... bytes exhausted
    $allData = array_merge($allData, $decodedResponse['data']);
    //recording current max to $after
    $after = $decodedResponse['version']['max'];
} while (!empty($decodedResponse['data']));
...