免责声明:
- 这是针对 Prestashop 1.5 ,但如果答案是:" this 已修复版本
1.x
"然后我会提出请愿书来更新我们的 店。- 我还将其标记为REST,因为我认为我已经彻底解释了它 足以让你不需要Prestashop的实际经验来理解。
醇>
因此,在Prestashop中,我们提供的Web服务不支持像search by category
这样简单的用例。
1。我们假设你想要获得第1,3和17类的所有产品:
那么解决方案是什么? 那么,你可以在这个答案中做点什么:https://stackoverflow.com/a/34061229/4209853
您可以从第1,3和17类获得所有产品,然后再拨打这些ID进行产品过滤的电话。
'filter[id]' => '['.implode('|',$productIDsArrayIGotBefore).']',
它丑陋而且 20世纪,但是......如果它完成了工作......除了它没有。 你知道,这是一个获取资源的呼吁,某个地方的人决定:
嘿,我们拥有所有这些优秀的HTTP动作动词,所以让我们将它们用于REST CRUD接口:POST为C,GET为R,PUT为U,DELETE为D. Neat
这很好,但是当与Prestashop的Web服务缺乏表达能力相结合意味着它很容易碰到它,你猜对了吗?是的,414。
Error HTTP 414 Request URI too long
我们都知道修改Apache以便它接受更长的请求URI是不整洁的可扩展解决方案。
所以我们可以尝试拆分数组并进行多次调用,这在概念上就是 ugh 。这不仅仅是因为多次查询的性能受到影响,还因为我们需要考虑连接的所有ID的字符数,以便计算我们可以(安全地)在一次调用中请求的数量。所有这些都有自己的警告,例如:
2。如果我们还希望过滤它们e.g. active=1
现在我们已经开始了,因为我们事先无法知道需要拨打多少电话。
让我们来定义:
N
是我从类别中获得的ID n
是我可以安全要求的IDS号码T
是我想要的(已过滤)产品数量t
是我已经拥有的(已过滤)产品k
是我们通过电话所以我们最终会得到类似的东西:
do{
n0= max(T-t, n);
k= get(products, n0);
t +=k;
}while(count(k)!=0 and count(t)<T and !empty(N))
..这只是......疯子。
我能想到的唯一优雅解决方案是创建一个新的Prestashop Web服务,它充当包装器,通过POST接收请求并将其转发到Prestashop服务。
但是,在那之前...你有一个更好的解决方案使用某种RESTomancy我可能会失踪吗?