api - Magento API 示例

标签 api magento

我正在寻找支持 Magento API 的模块的工作示例。我如何定义它、为其编写代码并调用它?

最佳答案

一个工作配置(在 app/code/local/ModuleName/etc/中。我将我的配置写入 api.xml 中):

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <ModuleName>
            <version>0.1.0</version>
        </ModuleName>
    </modules>
    <api>
        <resources>
            <customer translate="title" module="xyz">
                <model>ModuleName_Model_Api</model>
                <title>Customer Resource</title>
                <acl>customer</acl>
                <methods>
                    <info translate="title" module="xyz">
                        <title>Retrieve customer data</title>
                        <acl>customer/info</acl>
                        <method>info</method>
                    </info>
                </methods>
                <faults module="xyz">                   
                </faults>
            </customer>
        </resources>
        <acl>
            <resources>
                <customer translate="title" module="xyz">
                    <title>Customers</title>
                    <info translate="title" module="xyz">
                        <title>Get Info Test</title>
                    </info>
                </customer>
                <all>
                </all>
            </resources>
        </acl>
    </api>
</config>

PHP 代码(在 app/code/local/ModuleName/Model/Api.php 中):

class ModuleName_Model_Api extends Mage_Api_Model_Resource_Abstract
{
    function info()
    {
        return 'xxx';
    }
}

实际调用SOAP接口(interface)的PHP代码:

$mageUrl    = 'http:/local.magecomm/api/?wsdl'; 
$mageUser   = 'soaptest'; 
$mageApiKey = 'apitest'; 

$soap = new SoapClient($mageUrl); 

$sessionID = $soap->login($mageUser, $mageApiKey);

var_dump($soap->call($sessionID, 'customer.info', array()));

运行该脚本的结果:

C:/Temp>php magesoap.php
string(3) "xxx"

一些注意事项:

o 错误:“API 路径无效。”

  • 这意味着 Magento 找不到该模块。

o 错误:“资源路径不可调用。”

  • 这意味着 Magento 无法调用模块中的方法。

  • 您可以使用 system.log 文件对此进行调试。它将显示一个或多个有关如何无法从计算的文件路径自动加载请求的类的错误。

    2011-04-13T15:15:24+00:00 DEBUG (7): include(Mage/Customer/Model/Api.php) [function.include]: failed to open stream: No such file or directoryC:/Development/Projects/MagentoCommercial/lib/Varien/Autoload.php

    2011-04-13T15:15:24+00:00 DEBUG (7): include() [function.include]: Failed opening 'Mage/Customer/Model/Api.php' for inclusion (include_path='C:/Development/Projects/MagentoCommercial/app/code/local;C:/Development/Projects/MagentoCommercial/app/code/community;C:/Development/Projects/MagentoCommercial/app/code/core;C:/Development/Projects/MagentoCommercial/lib;.;C:/Development/Libraries;C:/Development/Libraries/Standard/_Pear')C:/Development/Projects/MagentoCommercial/lib/Varien/Autoload.php

o 上面的模块配置 XML 会将此 SOAP 接口(interface)链接到 API 权限中“客户”组下名为“获取信息测试”的新项目。然后就可以允许或拒绝特定的 API 用户/角色。

o 模块配置 XML 中/config/api/resources/customer/methods/info 下的值是应绑定(bind)到 SOAP 资源名称的方法的内部方法名称。如果它们相同,那么您可以省略此项。

o/config/api/resources/customer 下的值(即“ModuleName_Model_Api”)是这里的完整类名,因为它显然指的是我的类,它不是 Mage 的一部分。如果您尝试调用 Mage 中的现有类,您可以只使用简写符号(xxx/yyy、xxx/yyy_zzz 等)。

o 只有在模块配置的 ACL 部分中,“模块”属性 (<... module="">) 的值才显得重要。尽管如此,请确保它在所有地方都设置正确(大小写无关紧要)。可能他们只是还没有将其实现为主流,忽略它只会给您带来以后的问题。

达斯汀·奥普雷

关于api - Magento API 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6696224/

相关文章:

php - 使用 CURL 从 CRM API 中提取数据抛出错误

python - 从 API 调用返回的 XML 中分配变量

Android SDK 示例应用问题 :

swift - 如何在 SwiftUI 列表中重新加载数据?

Magento EAV : how to hard delete an attribute value?

javascript - 如何从nodejs服务器发送查询到开放数据服务器?

magento - 将 Magento 2.3.4 升级到 2.4 后产品无法保存,显示错误

php - 全页缓存, block 更新

magento - 无法修改 Magento 事件观察者中的响应,即使观察者正在触发

php - 如何在magento中获取产品属性值