在Magento中创建自定义API:第二部分

这篇学习帖子来源: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”是方法名称!



Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注