Cursos Magento

Tutorial: Módulo para customizar a API do Magento 2

,

Atualizado em 17 de setembro de 2020

Magento 2 - Customizando API

No Magento 2 vemos muito mais poder de API do que o Magento 1 com seus novos endpoints, e isso deixa ele ainda mais poderoso para manipulação. Mas não há como ter todas as funcionalidades nativas, e por isso eu escrevi este tutorial.

Para saber sobre API’s do Magento 1, consulte este outro artigo com exemplos de uso da API Magento, ou veja tudo sobre customização de API Soap Magento 1 na seção 9 do curso de criação de módulos e desenvolvimento backend para Magento 1.9.

Caso queira saber como consumir a API do Magento 2, você também pode ler o artigo já postado, chamado 3 Exemplos de como usar a API do Magento 2caso queira verificar o módulo criado abaixo basta acessar ele em meu Github.

Confira também 16 exemplos de uso da API REST no Magento 2 ou o Curso de API REST com mais de 650 exemplos de uso da API.

Base do módulo

Como expliquei no artigo Gerador de módulos para Magento 2, vamos utilizar o Magerun 2 para gerar a base do nosso módulo, usando o comando:

n98-magerun2.phar dev:module:create -m Rafaelcg Hello
n98-magerun2.phar module:enable -c Rafaelcg_Hello
n98-magerun2.phar setup:upgrade

Você também pode baixar um módulo base Magento 2 aqui no Magenteiro.

Depois do nosso módulo criado e ativado vamos começar o core do módulo.

Configuração da API

Para adicionar a função de API em nosso módulo vamos precisar adicionar apenas dois arquivos: o webapi.xml; e di.xml. No primeiro arquivo vamos configurar a API, e no segundo a interface que vai ser utilizada pelo nosso método.

<?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/hello/name/:name" method="GET">
        <service class="Rafaelcg\Hello\Api\HelloInterface" method="name"/>
        <resources>
            <resource ref="anonymous"/>
        </resources>
    </route>
</routes>

Na tag resource especificamos quais são os requerimentos do usuário para ter acesso a essa API. As opções possíveis são anonymous ou Magento (como é utilizado em Magento_Catalog::products ou Magento_Customer::group), definimos como anonymous para utilizar como um usuário anônimo.

<?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="Rafaelcg\Hello\Api\HelloInterface" type="Rafaelcg\Hello\Model\Hello" />
</config>

No di.xml vamos apenas definir qual via ser a interface que deverá ser utilizada.

<?php

namespace Rafaelcg\Hello\Api;
 
interface HelloInterface
{
    /**
     * Returns greeting message to user
     *
     * @api
     * @param string $name Users name.
     * @return string Greeting message with users name.
     */
    public function name($name);
}
<?php
namespace Rafaelcg\Hello\Model;

use Rafaelcg\Hello\Api\HelloInterface;
 
class Hello implements HelloInterface
{
    /**
     * Returns greeting message to user
     *
     * @api
     * @param string $name Users name.
     * @return string Greeting message with users name.
     */
    public function name($name) {
        return "Hello, " . $name;
    }
}

Com nosso módulo pronto vamos acessar a URL http://localhost/rest/V1/hello/name/Rafael para ver a mensagem abaixo:

Magento 2 Api customizada

Espero que tenha gostado assim como eu gostei de fazer esse tutorial para vocês. Embora simples, mostra como é fácil criar um endpoint no Magento 2.

Artigo Original: Tutorial Módulo para customizar a API do Magento 2

Faça como  o Rafael e contribua você também com um artigo para o Magenteiro – O melhor portal nacional sobre Magento, com cursos, artigos e tutoriais.

Rafael Corrêa Gomes
Últimos posts por Rafael Corrêa Gomes (exibir todos)
Assuntos: | | |
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/tutorial-modulo-para-customizar-api-magento-2/"]