You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopify产品API分页请求?被转义为%3F返回404错误如何解决?

问题解决方案

根因

osiset/laravel-shopify 扩展的 rest() 方法会自动对传入的第二个参数(请求路径)做URL编码处理,你手动将查询参数拼接到路径末尾时,路径中的?会被识别为路径的一部分编码为%3F,导致接口无法正确识别查询参数,返回404错误。

修复代码

不要手动拼接查询字符串到路径后,所有查询参数通过rest()方法的第三个参数传入,扩展会自动处理参数拼装和编码:

// 从返回结果中获取next对应的page_info值
$nextPageInfo = $productsall['link']['container']['next'];

// 调用接口时第三个参数传入查询参数数组
$productsall = $shop->api()->rest('GET', '/admin/api/2021-07/products.json', [
    'limit' => 50,
    'page_info' => $nextPageInfo
])['body']['container'];

更优的分页处理方案

该扩展已经内置了自动分页能力,不需要手动解析Link字段获取page_info,可以直接用内置方法遍历全量数据,降低出错概率:

// 首次请求设置每页条数
$productsResponse = $shop->api()->rest('GET', '/admin/api/2021-07/products.json', ['limit' => 250]);
$productsall = $productsResponse['body']['container'];

// 循环获取下一页,直到没有更多数据
while ($productsResponse->next()) {
    $nextPageData = $productsResponse->json();
    // 合并下一页产品数据到集合中即可
    $productsall = array_merge($productsall, $nextPageData['products']);
}

内容的提问来源于stack exchange,提问作者Mohammad Fahad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:15:04