Magento2 REST搜索"查询不存在"

时间:2016-04-15 14:39:59

标签: rest search magento-2.0

我正在使用Mangento 2.0.3 CE,我试图调用/search REST API。

有了这个请求:

/rest/V1/search?searchCriteria[requestName]=quick_search_container&searchCriteria[filterGroups][0][filters][0][field]=name&searchCriteria[filterGroups][0][filters][0][value]=%test%&searchCriteria[filterGroups][0][filters][0][condition_type]=like

我收到此错误:

{
  "message": "Query quick_search_container does not exist",
  "trace": "#0 vendor/magento/framework/Search/Request/Mapper.php(94): Magento\\Framework\\Search\\Request\\Mapper->mapQuery('quick_search_co...')\n#1 vendor/magento/framework/Search/Request/Builder.php(183): Magento\\Framework\\Search\\Request\\Mapper->getRootQuery()\n#2 vendor/magento/framework/Search/Request/Builder.php(141): Magento\\Framework\\Search\\Request\\Builder->convert(Array)\n#3 vendor/magento/framework/Search/Search.php(71): Magento\\Framework\\Search\\Request\\Builder->create()\n#4 [internal function]: Magento\\Framework\\Search\\Search->search(Object(Magento\\Framework\\Api\\Search\\SearchCriteria))\n#5 vendor/magento/module-webapi/Controller/Rest.php(265): call_user_func_array(Array, Array)\n#6 vendor/magento/module-webapi/Controller/Rest.php(160): Magento\\Webapi\\Controller\\Rest->processApiRequest()\n#7 var/generation/Magento/Webapi/Controller/Rest/Interceptor.php(24): Magento\\Webapi\\Controller\\Rest->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#8 vendor/magento/framework/App/Http.php(115): Magento\\Webapi\\Controller\\Rest\\Interceptor->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#9 vendor/magento/framework/App/Bootstrap.php(258): Magento\\Framework\\App\\Http->launch()\n#10 index.php(39): Magento\\Framework\\App\\Bootstrap->run(Object(Magento\\Framework\\App\\Http))\n#11 {main}"
}

如果我从查询中删除search?searchCriteria[requestName]=quick_search_container,我会收到此错误Request name not defined.

我有一个类别" CatTest"设置和一个简单的产品" ProdTest"应出现在结果中。

任何人都知道如何解决此错误?

[编辑]

在进一步挖掘之后,我发现在课程vendor/magento/framework/Search/Request/Builder.php l.137中,clean方法会导致$data var。 然后挑衅给定的例外。

2 个答案:

答案 0 :(得分:0)

实际上问题来自我的要求,这是错误的。

对于搜索API,正确的请求是(要转换为GET请求):

{
    "searchCriteria" : {
        "requestName": "quick_search_container",
        "filterGroups": [
            {
                "filters": [
                    {
                        "field": "search_term",
                        "value": "*"
                    }
                ]
            }
        ],
        "current_page": 1,
        "page_size": 20
    }
}

答案 1 :(得分:0)

对于那些来到这里却没有得到答案的人来说,你去吧:

http://your-siteurl.com/rest/V1/search?searchCriteria[requestName]=quick_search_container
&searchCriteria[filterGroups][0][filters][0][field]=search_term
&searchCriteria[filterGroups][0][filters][0][value]=Life
&searchCriteria[sortOrders][0][field]=created_at
&searchCriteria[sortOrders][0][direction]=DESC
&searchCriteria[pageSize]=10

我在这里按名称搜索=喜欢。我们使用quick_search_container。重要的是search_term,因为我们可以将其用于快速搜索而不是通过使用searchCriteria进行搜索。

您可以检查文件

  

vendor / magento / module-catalog-search / etc / search_request.xml

了解更多信息