phpmagentooauthmagento-rest-api

Create new magento Rest api to get category list in magento


Does anyone know how to create new magento rest api to get category listing.

I already saw this link magento rest api but this not fetch category listings.

If any one knows then please solve this..


Solution

  • First create basic module using http://www.silksoftware.com/magento-module-creator/ this and then you have to create following file and add this file in given path.

    Module path = app/code/local/Restapi/Categories

    1) app/code/local/Restapi/Categories/etc/api2.xml

    <?xml version="1.0"?>
    <config>
    <api2>
        <resource_groups>
            <catalog translate="title" module="api2">
                <title>Catalog</title>
                <sort_order>10</sort_order>       
            </catalog>
        </resource_groups>
        <resources>
            <categories translate="title" module="api2">
                <group>catalog</group>
                <model>categories/api2_category</model>
                <title>Categories</title>
                <sort_order>10</sort_order>
                <privileges>
                    <admin>
                        <retrieve>1</retrieve>
                  <!--  <create>1</create>
                        <update>1</update>
                        <delete>1</delete>  --> 
                    </admin>
                    <customer>
                        <retrieve>1</retrieve>
                  <!--  <create>1</create>
                        <update>1</update>
                        <delete>1</delete>  --> 
                    </customer>
                    <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>
                        <route>/categories/:cat_id</route>
                        <action_type>collection</action_type>
                    </route>
                </routes>
                <versions>1</versions>
            </categories>
        </resources>
    </api2>
    </config>
    

    Here cat_id is category id which we pass to fetch child category.

    2) app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Customer/V1.php

    <?php
    class Restapi_Categories_Model_Api2_Category_Rest_Customer_V1 extends Restapi_Categories_Model_Api2_Category
    {
    /**
     * 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;       
    }
    

    you also add this same V1.php file in this path if you have other user like admin and guest.

    app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Admin/V1.php

    app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Guest/V1.php

    Just you want to change the class path in V1.php file like Customer = Admin.