阅读:3427回复:0
magento中如何创建自己的api
magento本身提供了很好的webservice支持,举例子来说,在Mage_Sales_Model_Order_Api中有items,info,addcomment,hold,unhold,cancel等api方法.
magento/ |– app/ |– code/ | |– core/ | |– Mage/ | |– Sales/ | |– etc/ | | |– api.xml | | |– config.xml | |– Model/ | |– Order/ | |– Api.php 这些方法定义在api.xml中 //这里的sales_order是表明这个标签的名字,任何名字都可以但需要是唯一的,这个名字在后来调用这个接口时将会被用到, $salesinfo = $proxy->call($sessionId, ‘sales_order.info’, 100012370);这里面的sales_order就是这个标签的名字。Module指的就是这个接口属于哪一个模块的,显然这个接口是属于 sales模块的。 sales/order_api //model说明了到哪里去找这个api接口方法。Sales在config.xml中的model标签里设置了它的class,所以到时候会用它的class+_Order_Api作为class名。具体的为Mage_Sales_Model_Order_Api Order API sales/order //这里指明了该接口的acl配置路径,这些api模块需要设置acl,否则不能访问。 //methods标签里列出了所有这个sales_order接口的方法 Retrieve list of orders by filters items sales/order/info //list是方法名,因为list在php中是关键字,所以这里改用另外一个方法items,当要改用某个方法的时候用标签,接下来要指明这个方法在acl中的配置路径。 Retrieve order information sales/order/info //faults标签里列出了所有的可能出现的错误类型和提示信息,在设置标签里面的值的时候不能够有空白符。 100 Requested order not exists. 101 Invalid filters given. Details in error message. 102 Invalid data given. Details in error message. 103 Order status not changed. Details in error message. 下面是api.xml中的acl设置, //这里的sales和上面api设置中的sales/order中的sales相同,说明sales_order这个接口的acl设置应该到这里的sales下面的order标签里面找。 Sales //这里的title会在后台的role resource里面的acl列表里面显示。 2 Order //根据上面api设置中的sales/order/info应该可以找到这里来:) Retrieve orders info Api.xml中的设置是最重要的,只有api.xml中的信息设置正确了,我们才能够使用api接口。另外还有一件事情是不可少的就是,要在 magento的后台system->webservice->user创建你的用户名,api key。然后再role中选择某个role resource,如果没有,到system->webservice->roles去创建。在 system->webservice->roles->roles resources中选择权限,下面我们将创建自己的api,当创建好了以后,也会在这里显示,不要忘记到这里来选择它,以免你测试的时候出现 access denied错误。 我期望能够创建一个sales order自定义的api接口,用来获取一些特定订单信息,并做相关处理… (1)创建模块文件夹目录 magento/ |– app/ |– code/ | |– local/ | |– Packagename/ | |– Appsales/ | |– etc/ | | |– api.xml | | |– config.xml | |– Model/ | |– Order/ | |– Api.php |– modules/ |– etc/ |– Packagename_Appsales.xml (1)OK, 让我们告诉magento我写了个新的模块。magento/app/etc/modules/Packagename_Appsales.xml : true local (2)Api.xml的设置 Appsales/order_api Order API testsales/order Retrieve order information test testsales/order/info 100 Requested order not exists. 101 Invalid filters given. Details in error message. 102 Invalid data given. Details in error message. 103 Order status not changed. Details in error message. Test Sales 2 Order Retrieve orders info (3)Config.xml中的设置: 0.1.0 Packagename_Appsales_Helper Packagename_Appsales_Model_Order_Api (4)我的api接口: (5)如果没有helper文件夹的话可能在打开magento后台webservice的roles resources会出现问题,所以还是增加了helper文件夹和data.php |
|