18
Mar
Curso de Magento 2 – Crear una API
Magento 2 es una plataforma de comercio electrónico muy potente y versátil que permite a los propietarios de tiendas en línea crear experiencias de compra únicas y personalizadas para sus clientes. Una de las características más destacadas de Magento 2 es su capacidad para crear y gestionar APIs (Interfaces de Programación de Aplicaciones), que permiten la integración con sistemas externos. En esta tutorial, exploraremos paso a paso cómo crear una API en Magento 2.
Creando un módulo en Magento 2
Para crear una API personalizada, necesitamos un módulo personalizado en Magento 2. Te dejo el siguiente enlace para la creación de tu primer módulo en Magento 2. Una vez que lo tengas creado, podemos seguir al siguiente paso.
Interfaces en Magento 2
En Magento 2, las interfaces juegan un papel crucial en la arquitectura del sistema. Proporcionan una forma de definir contratos para las clases y especificar los métodos que deben ser implementados por las clases concretas. Las interfaces en Magento 2 son fundamentales para la modularidad, la extensibilidad y la interoperabilidad del sistema.
¿Qué son las Interfaces en Magento 2?
En términos simples, una interfaz en Magento 2 define un conjunto de métodos que deben ser implementados por cualquier clase que desee cumplir con esa interfaz. Estas interfaces actúan como contratos que garantizan que las clases concretas proporcionen la funcionalidad requerida. Magento 2 utiliza interfaces extensivamente en su arquitectura para permitir la modularidad y la personalización sin romper el núcleo del sistema.
Creando una API en Magento 2
Primero vamos a crear la siguiente estructura de nuestro módulo:
mkdir -p app/code/MyCompany/MyModule/Api/
touch app/code/MyCompany/MyModule/Api/ProductsManagementInterface.php
<?php declare(strict_types=1); namespace MyCompany\MyModule\Api; interface ProductsManagementInterface { /** * POST for Products api * @param string $param * @return string */ public function postProducts($param); }
Luego vamos a crear una clase modelo en Magento 2 que utilice la interfaz que hemos creado de la siguiente manera:
mkdir -p app/code/MyCompany/MyModule/Model
touch app/code/MyCompany/MyModule/Model/ProductsManagement.php
<?php declare(strict_types=1); namespace MyCompany\MyModule\Model; class ProductsManagement implements \MyCompany\MyModule\Api\ProductsManagementInterface { /** * {@inheritdoc} */ public function postProducts($param) { return 'hello api POST return the $param ' . $param; } }
Vincularemos nuestra interfaz con nuestro modelo de la siguiente manera:
touch app/code/MyCompany/MyModule/etc/di.xml
<?xml version="1.0" ?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="MyCompany\MyModule\Api\ProductsManagementInterface" type="MyCompany\MyModule\Model\ProductsManagement"/> </config>
Solo nos queda definir la ruta de nuestra api con el siguiente archivo:
touch app/code/MyCompany/MyModule/etc/webapi.xml
<?xml version="1.0" ?> <routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Webapi:etc/webapi.xsd"> <route url="/V1/mycompany-mymodule/products" method="POST"> <service class="MyCompany\MyModule\Api\ProductsManagementInterface" method="postProducts"/> <resources> <resource ref="anonymous"/> </resources> </route> </routes>
Para que se apliquen los cambios en nuestro modulo vamos a correr los siguientes comandos:
php bin/magento setup:upgrade
php bin/magento cache:clean
Ahora solo utilizamos un cliente como Postman o Insomnia y podremos acceder a nuestra api de la siguiente forma:
<magento project url>/rest/default/V1/mycompany-mymodule/products
Conclusión
Es importante documentar nuestra API para que otros desarrolladores puedan entender cómo utilizarla. Magento 2 ofrece herramientas para generar automáticamente la documentación de la API a partir de la configuración del módulo.
Con estos pasos, has creado con éxito una API personalizada en Magento 2 que te permitirá obtener información sobre tu tienda en linea. Puedes expandir este ejemplo para incluir más funcionalidades según tus necesidades específicas. ¡Ahora estás listo para integrar tu tienda Magento 2 con otras aplicaciones y sistemas externos!
¡Eso es todo!
Author
Licenciado en Informatica graduado de la Universidad Tecnológica de El Salvador. PHP Developer con más de 8 años de experiencia trabajando con HTML, CSS, Bootstrap, Tailwind, JavaScript, jQuery, Knockout JS, React JS, Node JS, MySQL, PHP, Laravel, Codeigniter, Wordpress, Woocommerce y Magento.