这篇学习帖子来源:https://code.tutsplus.com/tutorials/create-a-custom-api-in-magento-part-two–cms-23821
在本系列中,我们将讨论Magento中的自定义API。
在第一部分中,我们创建了一个完整的自定义模块来实现自定义API,我们在其中创建了所需的文件以插入模块提供的自定义API。
在第二部分和最后一部分中,我们将通过后端部分来演示如何使用API。
快速回顾
让我们快速回顾一下第一部分。这是我们已经创建的文件列表:
- app / etc / modules / Envato_All.xml:这是一个用于启用我们自定义模块的文件。
- app / code / local / Envato / Customapimodule / etc / config.xml:这是一个模块配置文件。
- app / code / local / Envato / Customapimodule / etc / api.xml:这是一个声明我们模块提供的API的文件。
- app / code / local / Envato / Customapimodule / etc / wsdl.xml:在这个文件中,我们将根据WSDL的约定定义API方法。
- app / code / local / Envato / Customapimodule / Helper / Data.php:这是Magento翻译系统使用的文件。
- app / code / local / Envato / Customapimodule / Model / Product / Api.php:它是一个模型文件,它实现了我们的API方法的逻辑。
- app / code / local / Envato / Customapimodule / Model / Product / Api / V2.php:这是一个支持Magento v2 API的文件。
此外,如果您已经启用了我们的自定义模块,当您访问http:// yourmagentostore / api / v2_soap?wsdl = 1页面时,您会看到我们的API方法“customapimoduleProductList”与其他API一起列出Magento中的可用API。
Magento支持“API角色”和“API用户”。我们需要“API角色”,因为您不希望允许用户访问Magento的每个API。“API角色”用于创建对API资源具有有限访问权限的角色。
例如,您可以创建一个仅允许对“产品列表”API进行只读访问的角色。另一方面,您可以创建一个允许目录修改的角色,它只会被分配给“授权”用户!
从后端设置“API用户”和“API角色”
在本节中,我们将创建演示“API角色”和“API用户”。稍后,我们将使用它们来使用我们模块提供的自定义API。前往Magento后端!
设置API角色
转到系统> Web服务>(SOAP / XMLRPC)角色。单击“ 添加新角色” 以创建新角色。根据该 角色信息 标签,我已经进入“演示SOAP角色”的角色名称 字段。
接下来,在“ 角色资源” 选项卡下,您将看到带有复选框的不同资源。单击 产品>产品数据 复选框。这意味着“演示SOAP角色”只能访问“产品数据”资源API。单击“ 保存角色” 按钮以保存角色信息。
设置API用户
现在,让我们创建API用户并为该用户分配“演示SOAP角色”。转到系统> Web服务>(SOAP / XMLRPC)用户。单击“ 添加新用户” 以创建新用户。在“ 用户信息” 选项卡下,请填写所需信息。
此外,在“ 用户角色” 选项卡下, 选择“ 演示SOAP角色” 单选按钮。单击“ 保存用户” 按钮以保存用户信息。
此外,在“ 用户角色” 选项卡下, 选择“ 演示SOAP角色” 单选按钮。单击“ 保存用户” 按钮以保存用户信息。
这就是它 – 我们已经设置了访问Magento API所需的角色和用户!
如何使用Magento API
在本节中,我们将了解如何调用Magento API。在您的文档根目录下,创建一个示例PHP文件并使用以下内容填充它:test_api.php
<?php
// v2 call
$client = new SoapClient('http://www.yourmagentostore.com/api/v2_soap/?wsdl=1');
$session = $client->login('soapuser', 'soapuser');
$result = $client->customapimoduleProductList($session);
$client->endSession($session);
echo '<pre>';
print_r($result);
// v1 call
$client = new SoapClient('http://www.yourmagentostore.com/api/soap/?wsdl=1');
$session = $client->login('soapuser', 'soapuser');
$result = $client->call($session, 'product.list', array(array()));
$client->endSession($session);
echo '<pre>';
print_r($result);
将“http://www.yourmagentostore.com”更改为您的Magento商店网址。正如我之前提到的,Magento支持两个版本的API,v1和v2。在这个例子中,我已经证明了两种方式。
在v2 API模式中,首先我们创建一个“SoapClient”类的新实例。接下来,我们调用“登录”方法登录Magento商店 – 当然我们需要提供前面部分中创建的“API用户”的用户名和密码。最后,我们调用“customapimoduleProductList”方法来检索产品列表!的$session
变量作为权利要求的方法的真实性的输入参数传递给该方法。这里需要注意的一件重要事情是“customapimoduleProduct”是资源前缀,“list”是方法名称。
在v1 API模式中,唯一不同的部分是调用API方法。我们使用通用的“调用”方法,其中“方法名称”和其他参数作为参数传递。如您所见,“product”用作资源前缀,“list”是方法名称!