【问题标题】:Extend Magento REST API in custom module在自定义模块中扩展 Magento REST API
【发布时间】:2014-04-09 01:58:56
【问题描述】:

我想使用 Magento Rest-Api 将自定义数据添加到 Magento 表中。 我在 Magento db 中添加了一个表,并使用以下链接创建了带有 Rest API 的模块

http://web.archive.org/web/20130512072025/http://magepim.com/news/Extending-the-Magento-REST-API-part-1_13

现在我想使用 Rest API 将数据添加到 Magento 表中...

我需要在api.xml/api2.xmlV1.php 文件中进行更改。

请帮助我,我已经使用产品 api2.xml 文件的参考尝试了许多代码。但没有运气。

当我运行以下 URL 时

http://magento-host/api/rest/magepim/products/count

它将执行V1.php文件的_retrieve()函数但是如何使用PHP RestApi oauth调用_create()函数

【问题讨论】:

    标签: php api magento rest oauth


    【解决方案1】:

    magento\app\code\core\Mage\Api2\Model\Resource.php 仅允许创建方法的集合操作类型.. 所以在 api2.xml 文件中更改并在属性标记中设置必填字段

    magento\app\code\community\MagePim\Extapi\etc\api2.xml

    <?xml version="1.0"?>
    <config>
        <api2>
            <resource_groups>
                <extapi translate="title" module="api2">
                    <title>Custom API calls</title>
                    <children>
                        <extapi translate="title" module="api2">
                            <title>My Api</title>
                        </extapi>
                    </children>
                </extapi>
            </resource_groups>
            <resources>
                <extapi translate="title" module="api2">
                    <group>extapi</group>
                    <model>extapi/api2</model>
                    <working_model>extapi/api2</working_model>
                    <title>Custom Api</title>
                    <privileges>
                        <admin>
                            <create>1</create>
                            <retrieve>1</retrieve>
                            <update>1</update>
                            <delete>1</delete>
                        </admin>
                    </privileges>
                    <attributes>
                        <owner_id>Owner ID</owner_id>
                        <identityid>Identity ID</identityid>
                        <social_id>Social ID</social_id>
                        <status>Status</status>
                        <text>Text</text>
                        <request_timestamp>Request Time</request_timestamp>
                        <status_timestamp>Status Time</status_timestamp>
                    </attributes>
                    <routes>
                        <!-- Call For V1.php _retrieve() -->
                        <route_entity>
                            <route>/scheduler</route>
                            <action_type>entity</action_type>
                        </route_entity>
                        <!-- Call For V1.php _create() -->
                        <route_collection>
                            <route>/scheduler/create</route>
                            <action_type>collection</action_type>
                        </route_collection>
                    </routes>
                    <versions>1</versions>
                </extapi>
            </resources>
        </api2>
    </config>
    

    magento\app\code\community\MagePim\Extapi\Model\Api2\Rest\Admin\V1.php

    /**
     * Override for Magento's REST API
     */
    class Magepim_Extapi_Model_Api2_Rest_Admin_V1 extends Mage_Api2_Model_Resource {
    
        protected function _retrieve(){
            return json_encode($shedulerData);
        }
        protected function _create($shedulerData){
            return json_encode($shedulerData);
        }
        protected function _retrieveCollection(){
            return json_encode(array('method'=>'_retrieveCollection'));
        }
    ....................
    }
    

    【讨论】:

    • 如何在 api2.xml 中实现 _update(), _delete(), _retrieveCollection(), _retrieve() , _create() ,我尝试了上述 route_collection 但返回 _retrieve()
    • @ReniRajNR 它为我工作。看到这可能对你有帮助webguys.de/magento-1/…
    • 当我使用create 302错误返回时,我该如何解决?
    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 2014-01-23
    • 2015-12-11
    • 1970-01-01
    • 2015-09-24
    • 2012-07-26
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多