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

免责声明:

  • 这是面向Prestashop 1.5的,但如果答案是:“这 是在版本
    1.x中修复的
    “然后我将提出申请更新我们的 商店
  • 我也把它标记为REST,因为我想我已经解释得很透彻了 足够了,所以你不需要实际的经验来理解它

  • 因此,在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发动机都有不足之处