如何使用 Guzzle 进行分页

Posted

技术标签:

【中文标题】如何使用 Guzzle 进行分页【英文标题】:How to use Guzzle with pagination 【发布时间】:2019-02-03 17:18:54 【问题描述】:

我使用 Guzzle 从服务器 API url 检索 API,我想获取数据并使用分页。 我试试这些:

$request_url="http://192.168.0.1:8081/APIServer/public/api/products";
        $client = new \GuzzleHttp\Client();
        $response = $client->request('GET', $request_url, [
            'headers' => ['Accept' => 'application/xml',
                          'Authorization' => 'Bearer ' . $token,
                          'Content-Type' => 'application/json'
                         ],
            'timeout' => 120
        ])->getBody()->getContents();

        $responseXml = simplexml_load_string($response);
        $responseArray = json_decode(json_encode($responseXml), true);

        return view('dashboard')->with(array('data'=>$responseArray['stdClass']));

如何使用 guzzle 进行分页?

【问题讨论】:

【参考方案1】:

简短的回答:你不能

长答案:Laravel 的分页是针对雄辩的查询,而不是针对您拥有的任何类型的数据。

我建议在前端进行管理。但你可以这样做:

//results may vary according to your data:
$page = !($request->page) ? 1 : $request->page];
$no_items = 5;
$offset = ($page - 1) * $no_items;
$total_items = count($responseArray);
$total_pages = ceil($total_items / $no_items);
$final = array_splice($responseArray, $offset, $no_items);

基于此问题的公认答案:How to do Pagination for JSON data in php?

【讨论】:

以上是关于如何使用 Guzzle 进行分页的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Guzzle 发送 PUT 请求?

如何使用 Laravel 5.2 + Guzzle 6 存储 JWT 并授予用户访问权限

使用 PHPUnit 在 Laravel 控制器中进行单元测试 Guzzle

学习如何使用 Guzzle 从 API 访问数据

如何使用 Guzzlehttp/guzzle 6 发送 Cookie?

如何使用 Guzzle 发帖? [复制]