【问题标题】:Magento rest api getting error Request does not match any routeMagento rest api得到错误请求不匹配任何路由
【发布时间】:2019-12-21 00:40:13
【问题描述】:

我创建了一个 rest api web 服务,但是在点击 url 时出现错误

http://localhost:81/magento/api/rest/category/2

<magento_api>
    <messages>
        <error>
            <data_item>
                <code>404</code>
                <message>Request does not match any route.</message>
            </data_item>
        </error>
    </messages>
</magento_api>

我的 api2.xml 是:-

<?xml version="1.0"?>
<config>
    <api2>
        <resource_groups>
            <esoft_rescategories translate="title" module="Esoft_Restcategories">
                <title>Esoft Restcategories API</title>
                <sort_order>11</sort_order>
            </esoft_rescategories>
        </resource_groups>
        <resources>
            <esoft_restcategories translate="title" module="Esoft_Restcategories">
                <group>esoft_rescategories</group>
                <model>esoft_restcategories/api2_restapi</model>
                <title>Categories</title>
                <sort_order>11</sort_order>
                <privileges>
                    <admin>
                        <create>1</create>
                        <!--<retrieve>1</retrieve>
                        <update>1</update>
                        <delete>1</delete>-->
                    </admin>
                    <guest>
                        <retrieve>1</retrieve>
                        <!--<create>1</create>
                        <update>1</update>
                        <delete>1</delete>-->
                    </guest>
                </privileges>
                 <attributes>
                <category_id>Category ID</category_id>
                <name>Name</name>
                <parent_id>Category Parent ID</parent_id>
                <child_id>Category Child List</child_id>
                <active>Active</active>
                <level>Level</level>
                <position>Position</position>
            </attributes>
             <routes>
               <route_entity>
                        <route>/categories/:cat_id</route>
                        <action_type>entity</action_type>
                    </route_entity>
                    <route_collection>
                        <route>/categories</route>
                        <action_type>collection</action_type>
                    </route_collection>
            </routes>
                <versions>1</versions>
            </esoft_restcategories>
        </resources>
    </api2>
</config>

我的来宾版本文件是:-

<?php

class Esoft_Restcategories_Model_Api2_Restapi_Rest_Guest_V1 extends Esoft_Restapi_Model_Api2_Restapi {

  /**
 * Retrieve list of category list.
 *
 * @return array
 */
protected function _retrieveCollection()
{   
    $ruleId = $this->getRequest()->getParam('cat_id');

//  $cat_mod = Mage::getModel('catalog/category')->load($ruleId)->toArray();
    $cats = Mage::getModel('catalog/category')->load($ruleId);
    $subcats  = Mage::getModel('catalog/category')->load($ruleId)->getChildren();

    $cur_category = array();

    $node['category_id'] = $ruleId;
    $node['name'] = $cats->getName();
    $node['parent_id'] = $cats->getParentId();
    $node['child_id'] = $subcats;
    if($cats->getIsActive()){
        $node['active'] = 1;
    }else{
        $node['active'] = 0;
    }
    $node['level'] = $cats->getLevel();
    $node['position'] = $cats->getPosition();

    $cur_category[] = $node;

//  $subcats  = Mage::getModel('catalog/category')->load($ruleId)->getAllChildren();
//  $subcats  = Mage::getModel('catalog/category')->load($ruleId)->getChildren();

    if($subcats != '') 
    {
        foreach(explode(',',$subcats) as $subCatid)
        {
            $_category = Mage::getModel('catalog/category')->load($subCatid);
            $childcats  = Mage::getModel('catalog/category')->load($subCatid)->getChildren();

            $node['category_id'] = $subCatid;
            $node['name'] = $_category->getName();
            $node['parent_id'] = $_category->getParentId();
            $node['child_id'] = $childcats;
            if($_category->getIsActive()){
                $node['active'] = 1;
            }else{
                $node['active'] = 0;
            }
            $node['level'] = $_category->getLevel();
            $node['position'] = $_category->getPosition();

            $cur_category[] = $node;

        }
    }

    return $cur_category;       
}
}

请告诉我如何解决此错误。

还请告诉我我们定义路线的依据。

【问题讨论】:

  • 各位大侠帮帮我
  • 请你帮我处理最初的 oauth 请求.....因为我正在尝试构建一个 android 应用程序

标签: rest magento


【解决方案1】:

寻找此错误原因的简单答案:

请求不匹配任何路由

您是否发布了错误的 METHOD,例如 GET/POST/PUT/DELETE。

也有可能是API url本身的路径不对。

【讨论】:

  • 谢谢,有时你会忘记一些显而易见的事情
【解决方案2】:

根据您的描述,您的 url 格式错误(给定 url 中的路由未匹配)。

<route>/categories/:cat_id</route>
        ^^^^^^^^^

所以你需要像下面这样更改网址

http://localhost:81/magento/api/rest/categories/2

【讨论】:

  • 问题已解决,但 json 数据不正确
  • "[{\"1\":{\"title\":\"根目录\",\"url\":null,\"children\":{\"2\ ":{\"title\":\"Electronics\",\"url\":null,\"children\":{\"3\":{\"title\":\"笔记本电脑\",\ "url\":\"笔记本电脑\"}}},\"4\":{\"title\":\"Men\",\"url\":\"apparels\",\"children\" :{\"9\":{\"title\":\"Formal Mens Jeans\",\"url\":\"formal-mens-jeans\"}}},\"5\":{\ "title\":\"Women\",\"url\":\"women\"},\"6\":{\"title\":\"Baby & Kids\",\"url\" :\"baby-kids\"},\"7\":{\"title\":\"Home & Furniture\",\"url\":\"home-furniture\"}}}}]"
  • 可能是标题的问题。检查您的响应标题
  • 在得到响应后尝试 JSON.parse(response) 你会得到正确的 json 格式。
  • JSON.parse(response) 在哪里写这个我在 php 中编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 2010-12-06
  • 1970-01-01
相关资源
最近更新 更多