Magento Web API 入门(REST 和 SOAP)
已发表: 2020-10-06Magento 2 Web API 框架为用户提供了创建可以与第三方模块通信的新服务的机会。 它们是 Magento 2 支持基于 CRUD 操作(创建、读取、更新和删除)的 REST 和 SOAP Web 服务。
在本文中,我们将解释使用 Magento 2 API 的初始步骤。 这些 API 加快了处理能力并促进了数据的传输,例如产品、客户或订单,以及将其传输到第三方系统。 它还可以帮助您管理库存。
通过自动化流程,API 的使用可以帮助您编写更少的代码。
目录
- 什么是 Magento Web API?
- 您可以使用 Magento Web API 做什么?
- 入门:使用 Magento 2 Rest API
- 在 Magento 2 中创建 Web 服务用户
- Magento 2 REST API 身份验证
- 在 Magento 2 中使用 REST API 获取模块
- 使用 SOAP 服务
- SOAP 服务——使用 Magento 2 进行身份验证
- 最后的话
什么是 Magento Web API?
Magento Web API 对于希望使用有助于与 Magento 系统通信的 Web 服务的开发人员来说非常容易理解。 这些功能是 API 的关键:
- Magento 2 支持 REST(表示状态传输)和 SOAP(简单对象访问协议)。
- 它提供三种类型的身份验证:1) 用于第三方应用程序身份验证的 OAuth 1.0a,2) 用于移动应用程序身份验证的令牌化方法,以及 3) 用于管理和客户验证的登录凭据。
- 您可以通过编写几行 XML 来配置任何 Magento 或第三方 Web API。
- 它支持保存移动响应的 Web API 的字段过滤。
- 当前的框架基于 CRUD(创建、读取、更新、删除)和搜索模型。
您可以使用 Magento Web API 做什么?
API 帮助各种模块相互通信。 它们可用于执行广泛的任务。 例如:
- 您可以使用 Magento 创建在线商店,并将它们与 POS(销售点)等物理系统连接,以控制全球库存
- 轻松与 CRM(客户关系管理)或 ERP(企业资源规划)后端系统集成,例如 Salesforce、Microsoft Dynamics 或其他完善的软件
- 它有助于与 CMS(内容管理系统)连接
- 您还可以在 Magento 后端(管理面板)或 Magento 店面创建 JavaScript 小部件
入门:使用 Magento 2 Rest API
要在 Magento 2 中创建 Web 服务角色,请按照以下简单步骤操作:
1.登录 Magento 2 管理面板。
2.转到系统>>用户角色并单击添加新角色按钮。
3. 输入角色名称。
4. 在您的密码字段中,输入您的 Magento 2 管理员的当前密码。
5.在左侧,单击角色资源。 在资源访问下,仅选择您的 Web 服务所需的内容。
6.一旦完成,点击保存角色。
在 Magento 2 中创建 Web 服务用户
按照以下步骤为新创建的角色创建一个新用户:
1.进入系统>>所有用户,然后点击添加新用户。
2.输入所需的信息,包括用户名、名字和姓氏、电子邮件和密码。
3. 在左侧,单击用户角色,然后选择新创建的角色。 完成后,单击保存用户按钮。
Magento 2 REST API 身份验证
在这里,我将通过令牌认证方法来认证 REST API。 这涉及在初始连接中传递用户名和密码并接收将保存在变量中以供进一步调用的令牌。
<?php //API URL for authentication $apiURL="http://magento-91647-257956.cloudwaysapps.com/index.php/rest/V1/integration/admin/token"; //parameters passing with URL $data = array("username" => "username", "password" => "********"); $data_string = json_encode($data); $ch = curl_init($apiURL); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json","Content-Length: ".strlen($data_string))); $token = curl_exec($ch); //decoding generated token and saving it in a variable $token= json_decode($token); ?>
请注意:以用户名和密码为例。
在 Magento 2 中使用 REST API 获取模块
您可以使用 Magento 2 REST API 获取数据。 这是 Magento EE 和 CE 的 REST API 的完整列表。
<?php //Using above token into header $headers = array("Authorization: Bearer ".$token); //API URL to get all Magento 2 modules $requestUrl='YourgeneratedUrl'; $ch = curl_init($requestUrl); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); //decoding result $result= json_decode($result); //printing result print_r($result); ?>
在上面的代码中,我已经通过 API URL 传递了令牌(之前获取的),以获取安装在 Magento 2 商店中的所有模块。
这是完整的代码。
<?php //API URL for authentication $apiURL="URL"; //parameters passing with URL $data = array("username" => "username", "password" => "*********"); $data_string = json_encode($data); $ch = curl_init($apiURL); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json","Content-Length: ".strlen($data_string))); $token = curl_exec($ch); //decoding generated token and saving it in a variable $token= json_decode($token); //******************************************// //Using above token into header $headers = array("Authorization: Bearer ".$token); //API URL to get all Magento 2 modules $requestUrl='YourURL'; $ch = curl_init($requestUrl); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); //decoding result $result= json_decode($result); //printing result print_r($result); ?>
使用 SOAP 服务
在我们进入 SOAP 服务之前,了解 Magento 的命名约定很重要:
- 您必须使用 CamelCase 命名服务。 例如,MyFirstModule
- 字符串“Service”被省略,意味着你不能使用它。
- “Magento”前缀和“Interface”后缀也升级了。
- 如果您的“服务”名称与“模块”名称相同,则模块名称将被省略。
因此,请务必牢记这些要点。
SOAP 服务——使用 Magento 2 进行身份验证
可以使用 OAuth 访问令牌通过 HTTP 访问 SOAP 资源。 OAuth 身份验证类似于令牌方法,但提供了更复杂的安排。 访问令牌是代表颁发给客户端的访问授权的字符串。
下面是解释如何获取访问令牌的 PHP 脚本:
<?php $opts = [ 'http'=> [ 'header' => 'Authorization: Bearer 36849300bca4fbff758d93a3379f1b8e' ] ]; $wsdlUrl = 'http://magento.ll/soap/default?wsdl=1&services=testModule1AllSoapAndRestV1'; $serviceArgs = ["id" => 1]; $context = stream_context_create($opts); $soapClient = new SoapClient($wsdlUrl, ['version' => SOAP_1_2, 'stream_context' => $context]); $soapResponse = $soapClient->testModule1AllSoapAndRestV1Item($serviceArgs); ?>
最后的话
本文概述了 Magento Web API 的基础知识,但您还可以学习更多内容。 如果你想更深入地掌握 Magento 2 API 的使用,那么你应该探索方法是如何内置在 Magento 2 和第三方扩展中的。 您还应该了解如何将信息传递到所需的系统。
就是这样了!
要高枕无忧地体验更快的 Magento 托管,请查看 DigitalOcean、Vultr 和 Linode 的 3 天免费试用。