【问题标题】:Magento2 REST Search "Query does not exists"Magento2 REST 搜索“查询不存在”
【发布时间】:2016-04-15 14:39:59
【问题描述】:

我在 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。 然后引发给定的异常。

【问题讨论】:

    标签: rest search magento-2.0


    【解决方案1】:

    其实问题出在我的请求是错误的。

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

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

    【讨论】:

      【解决方案2】:

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

      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。

      你可以检查文件

      供应商/magento/module-catalog-search/etc/search_request.xml

      更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-18
        • 1970-01-01
        • 1970-01-01
        • 2018-05-01
        • 1970-01-01
        • 2017-08-21
        • 1970-01-01
        相关资源
        最近更新 更多