我正在构建一个 Web api,我需要 prestashop 的产品才能正常工作。
问题是有超过 80000 个活跃产品,这真的很痛苦。
因此,我正在尝试过滤最近几天更新的产品,以尽量减少请求加载时间。
我到目前为止的代码是这样的
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://'.PS_WS_KEY.'@'.PS_WS_URL.'/api/products/?filter[date_upd]=[2021-01-01 00:00:00, 2021-04-07 00:00:00]&date=1&output_format=JSON',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
print_r($response);
上面的 cURL 返回一个空数组。我遇到的另一个问题是,当我获取所有产品时,我无法过滤特定字段,即 id、名称、价格、描述等。相反,我只获取 id。
Prestashop 版本 1.7.3,PHP 7.4
要获取所有字段,您必须指定display=full,例如:
'https://'.PS_WS_KEY.'@'.PS_WS_URL.'/api/products/?display=full
cURL响应空数组时,状态码是200吗? 尝试:
'https://'.PS_WS_KEY.'@'.PS_WS_URL.'/api/products/?filter[date_upd]=[2021-01-01 00:00:00|2021-04-07 00:00:00]&date=1&output_format=JSON'
就我而言,删除用作过滤器的日期时间的时间部分可以解决问题。
类似这样的:
'https://'.PS_WS_KEY.'@'.PS_WS_URL.'/api/products/?filter[date_upd]=[2021-01-01|2021-04-07]&date=1&output_format=JSON'