使用Magento API获取标签列表遇错误,求正确实现方案
解决Magento API标签查询的错误与正确实现
错误原因
你之前调用产品列表接口时用tags作为过滤字段报错,是因为**tags不是Magento产品实体的直接属性**。产品标签存储在独立的catalog_product_tag关联表中,无法直接通过产品接口的tags字段过滤。
1. 获取系统所有可用标签
要获取系统中所有标签,直接调用标签列表API即可:
- 请求方式:
GET - 请求URL:
/rest/V1/products/tags/list - 无需额外参数
返回示例(简化版):
[ { "tag_id": 1, "name": "my tag", "products_count": 5, "customers_count": 2 }, { "tag_id": 2, "name": "my tag2", "products_count": 3, "customers_count": 1 } ]
2. 按标签名称查询对应产品
要按标签名称筛选产品,需使用tag作为过滤字段(而非tags),正确的请求URL示例:
精确匹配标签名称
/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=tag&searchCriteria[filter_groups][0][filters][0][value]=my tag&searchCriteria[filter_groups][0][filters][0][condition_type]=eq
模糊匹配标签名称(如包含"my"的标签)
/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=tag&searchCriteria[filter_groups][0][filters][0][value]=%my%&searchCriteria[filter_groups][0][filters][0][condition_type]=like
补充说明
如果需要先通过标签名称获取tag_id,再查询产品,也可以调用/rest/V1/products/tags/search?searchCriteria[filter_groups][0][filters][0][field]=name&searchCriteria[filter_groups][0][filters][0][value]=my tag得到标签ID,再用/rest/V1/products/tags/{tagId}/products获取对应产品列表,这种方式适合需要多次复用标签ID的场景。
内容的提问来源于stack exchange,提问作者Lydia Kirubai S
相关产品推荐
相关产品推荐

