RESTomancy:从Prestashop 1.5中的类别中获取产品

时间:2016-02-24 11:04:21

标签: web-services rest prestashop prestashop-1.5

  

免责声明:

     
      
  1. 这是针对 Prestashop 1.5 ,但如果答案是:" this   已修复版本1.x"然后我会提出请愿书来更新我们的   店
  2.   
  3. 我还将其标记为REST,因为我认为我已经彻底解释了它   足以让你不需要Prestashop的实际经验来理解
  4.   

因此,在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我可能会失踪吗?

0 个答案:

没有答案