我尝试通过几个id从magento rest api获取产品。但不明白如何使其正确。 现在我将这种方法用于make过滤器:
api/rest/products/?filter[0][attribute]=entity_id&filter[0][in][0]=564&filter[0][in][1]=563
此过滤器有效但仅当它由10个id组成时。如果我使用大于10的id进行过滤,那么magento会给我:
{"messages":{"error":[{"code":401,"message":"oauth_problem=signature_invalid"}]}}
成功要求:
/api/rest/products?filter[0][in][4]=244&filter[0][in][6]=246&filter[0][in][7]=250&filter[0][in][9]=248&filter[0][in][8]=249&filter[0][in][1]=243&dir=asc&filter[0][in][0]=241&filter[0][in][2]=242&filter[0][in][3]=245&filter[0][in][5]=247&order=entity_id&filter[0][attribute]=entity_id
失败请求:
/api/rest/products?filter[0][in][4]=244&filter[0][in][6]=246&filter[0][in][7]=250&filter[0][in][9]=248&filter[0][in][10]=256&filter[0][in][8]=249&filter[0][in][1]=243&dir=asc&filter[0][in][0]=241&filter[0][in][2]=242&filter[0][in][3]=245&filter[0][in][5]=247&order=entity_id&filter[0][attribute]=entity_id
如何更正请求获取请求?
我不会在过滤器中使用'来自'和'到'因为我的id不是范围(不是1,2,3,4,而是34,1,99,45)。因此,我将每个id用于接收对象。
似乎我找到了理由。我使用python lib rauth对magento rest api进行make请求。当我选择签名HmacSha1Signature然后出现此问题。在我的案例中使用HmacSha1Signature时,似乎rauth不正确计算签名。我试过使用RsaSha1Signature,但如果使用此签名,magento会发送500代码。现在我使用PlaintextSignature,它的工作正确。后来我会在rauth计算签名中找到问题,因为我需要签名。