Web services Restomance:从Prestashop 1.5中的类别中获取产品
免责声明:Web services Restomance:从Prestashop 1.5中的类别中获取产品,web-services,rest,prestashop,prestashop-1.5,Web Services,Rest,Prestashop,Prestashop 1.5,免责声明: 这是面向Prestashop 1.5的,但如果答案是:“这 是在版本1.x中修复的“然后我将提出申请更新我们的 商店 我也把它标记为REST,因为我想我已经解释得很透彻了 足够了,所以你不需要实际的经验来理解它 因此,在Prestashop中,我们有这样一个Web服务,它缺乏对用例的支持,比如按类别搜索 1。假设您希望获得类别1、3和17中的所有产品: 那么解决方案是什么呢? 好吧,你可以按照下面的答案做一些事情: 在这里,您可以获得类别1、3和17中的所有产品,然后再次调用这些I
1.x中修复的
“然后我将提出申请更新我们的
商店李>
因此,在Prestashop中,我们有这样一个Web服务,它缺乏对用例的支持,比如按类别搜索
1。假设您希望获得类别1、3和17中的所有产品:
那么解决方案是什么呢?
好吧,你可以按照下面的答案做一些事情:
在这里,您可以获得类别1、3和17中的所有产品,然后再次调用这些ID进行产品筛选
'过滤器[id]'=>'['.内爆('|',$PRODUCTIDSRARAYGOTBEEFORE)。']',
这是丑陋的20世纪风格,但是。。。如果它完成了任务。。。但事实并非如此。
你看,这是一个获取资源的电话,某个地方的人决定:
嘿,我们有所有这些漂亮的HTTP动作动词,所以让我们将它们用于REST CRUD接口:POST代表C,GET代表R,PUT代表U,DELETE代表D
这很好,但如果再加上Prestashop的Web服务缺乏表达能力,你猜到了吗?是的,414
错误HTTP 414请求URI太长
我们都知道,修改Apache使其接受更长的请求uri不是一个整洁的可伸缩解决方案
因此,我们可以尝试拆分数组并进行多个调用,这只是概念上的问题。这不仅是因为进行多个查询会影响性能,还因为我们需要考虑连接的所有ID的字符数,以计算一次调用中可以(安全地)请求的字符数。所有这些都有自己的警告,比如:
2。如果我们还想过滤它们,例如active=1,该怎么办?
现在我们可以搭便车了,因为我们无法事先知道需要打多少个电话
让我们定义一下:
N
是我从分类中获得的ID
n
是我可以安全请求的ID数
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))
do{
n0=最大值(T-T,n);
k=获取(产品,n0);
t+=k;
}而(计数(k)!=0和计数(t)好的,我想你已经找到了解决方案。Prestashop当前的API在复杂查询中不是高效的。1.6中没有任何更新,因此不需要升级。你必须编写自己的包装来添加更多的过滤选项。@FlorialeMatre我担心。但让我吃惊的是…实际上是按类别划分的产品ode>对Prestashop的复杂查询?我的意思是,听起来像Prestashop Web Service 101,这是最基本的用例之一。如果他们不能涵盖这一点,他们在设计它时是怎么想的?:/我在以前的工作中使用Prestashop,因为我们试图为我们的销售点应用程序集成它,我会说大部分Ecomm en发动机都有不足之处