Статьи

Создание пользовательского API в Magento: часть вторая

В этой серии мы обсуждаем пользовательские API в Magento.

В первой части мы создали полноценный пользовательский модуль для реализации пользовательского 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: в этом файле мы определим методы API в соответствии с соглашением WSDL.
  • 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: Это файл для поддержки API Magento v2.

Кроме того, если вы уже включили наш пользовательский модуль, вы должны увидеть, что наш метод API «customapimoduleProductList» отображается вместе с другими API, когда вы посещаете страницу http: // yourmagentostore / api / v2_soap? Wsdl = 1, на которой перечислены все доступные API в Magento.

Magento поддерживает «Роли API» и «Пользователи API». Нам нужны «Роли API», так как вы не хотите разрешать пользователю доступ ко всем API Magento. «Роли API» используются для создания ролей с ограниченными правами доступа к ресурсам API.

Например, вы можете создать роль, которая разрешает доступ только для чтения к API «Список продуктов». С другой стороны, вы можете создать роль, которая позволяет изменять каталог, и она будет назначена только «авторизованным» пользователям!

В этом разделе мы создадим демо «Роль API» и «Пользователь API». Позже мы будем использовать их для использования пользовательских API, предоставляемых нашим модулем. Отправляйся в бэкенд Magento!

Перейдите в Система> Веб-службы> (SOAP / XMLRPC) Роли . Нажмите « Добавить новую роль», чтобы создать новую роль. На вкладке « Информация о роли » я ввел «Demo SOAP Role» в поле « Имя роли» .

Добавить новую роль - Информация о роли

Далее, на вкладке Role Resources вы увидите различные ресурсы с флажками. Нажмите на Продукты> Флажок данных продукта . Это означает, что «Demo SOAP Role» может получить доступ только к API ресурса «Данные продукта». Нажмите на кнопку Сохранить роль , чтобы сохранить информацию о роли.

Добавить новую роль - ресурсы

Теперь давайте создадим пользователя API и назначим этому «роль демоверсии SOAP». Перейдите в раздел Система> Веб-службы> (SOAP / XMLRPC) Пользователи . Нажмите на Добавить нового пользователя, чтобы создать нового пользователя. На вкладке User Info , пожалуйста, заполните необходимую информацию.

Добавить нового пользователя - Информация о пользователе

Кроме того, на вкладке « Роль пользователя » установите переключатель « Демо-роль SOAP ». Нажмите на кнопку Сохранить пользователя , чтобы сохранить информацию о пользователе.

Добавить нового пользователя - роль пользователя

Вот и все – мы настроили необходимую роль и пользователя для доступа к API Magento!

В этом разделе мы увидим, как вызывать API Magento. Под корневым каталогом документа создайте пример PHP-файла и заполните его следующим содержимым.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?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” на URL своего магазина Magento. Как я упоминал ранее, Magento поддерживает две версии API, v1 и v2. В этом примере я продемонстрировал оба способа.

В режиме v2 API сначала мы создаем новый экземпляр класса «SoapClient». Затем мы вызываем метод «login» для входа в хранилище Magento – конечно, нам нужно будет указать имя пользователя и пароль «API User», созданного в предыдущем разделе. Наконец, мы вызываем метод customapimoduleProductList для получения списка продуктов! Переменная $session передается методу в качестве входного параметра для подтверждения подлинности метода. Здесь важно отметить, что «customapimoduleProduct» – это префикс ресурса, а «list» – это имя метода.

В режиме API v1 единственная другая часть – это вызов метода API. Мы используем универсальный метод «call», в котором «имя метода» и другие параметры передаются в качестве аргументов. Как видите, «product» используется в качестве префикса ресурса, а «list» – это имя метода!

Итак, это подводит итог серии! Теперь вы должны чувствовать себя комфортно с API Magento, и вы можете создавать собственные API в соответствии с вашими требованиями! Не стесняйтесь стрелять ваши предложения и отзывы!