You need to enable JavaScript to run this app. Guzzle使用request()发起GET请求时如何构造符合要求的query参数
优惠活动
大模型
产品
解决方案
定价
更多

Guzzle使用request()发起GET请求时如何构造符合要求的query参数

问题根因

你当前直接把数组赋值给query下的paginator_data字段时,Guzzle会默认调用PHP原生http_build_query处理多维数组,生成的查询字符串格式为paginator_data[page]=1&paginator_data[page_size]=10,和接口期望的「JSON字符串编码后的值」格式不匹配。

解决方案

先对paginator_data对应的数组做JSON序列化,再赋值给query参数即可,Guzzle会自动对JSON字符串做URL编码,不需要你手动处理编码逻辑。
正确代码如下:

$result = $client->request(
    'GET',
    'cart/current/get-items',
    [
        'headers' => [
            'X-AUTH-API-TOKEN' => 'Bearer ' . $tokens->token
        ],
        'query'=>[
            // 先序列化为JSON字符串,Guzzle会自动做URL编码
            'paginator_data' => json_encode([
                'page'=>1,
                'page_size' => 10
            ])
        ]
    ]
);

注意:不要手动对json_encode的结果做URL编码,Guzzle的query参数默认会对所有值做一次URL编码,手动编码会导致二次编码,接口拿到的内容无法正常解析。

效果验证

上述代码生成的原始查询字符串为:

paginator_data=%7B%22page%22:1,%22page_size%22:10%7D

和你抓包得到的前端请求格式完全一致,接口侧可以正常通过json_decode拿到解析后的分页参数。

内容的提问来源于stack exchange,提问作者Alpha Kenny Buddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 01:39:02