Actualizaciones de la API de Magento 2: nuevo lenguaje de consulta

Ya hemos escrito sobre la API de Magento 2 , ¿por qué volver al tema?

Bueno, ha pasado más de un año y se han introducido algunos cambios. Lo más probable es que se haya enterado de estos cambios en nuestra publicación de noticias sobre Magento 2 . Pero hoy discutiremos el área en particular: la API de Magento 2 y las nuevas formas de manejarla.

Vea qué API de soporte de extensiones de Amasty

Resumen del artículo [ ocultar ]

  • API de Magento: ¿qué hay de nuevo?
  • GraphQL frente a REST API y SOAP API: ventajas clave
    • Ventaja n.º 1 Orientación mejorada
    • Ventaja #2. Desempeño mejorado
  • Trabajando con Magento 2 GraphQL
    • Paso 1. El comienzo
    • Paso #2 GraphQL: consultas con ejemplos
      • GraphQL: ¿cómo escribir una consulta?
  • Resumiendo

API de Magento: ¿qué hay de nuevo?

En realidad, mucho. Magento es un sistema dinámico con una comunidad vibrante que monitorea constantemente a los usuarios de Magento y hace todo lo posible para resolver los problemas que enfrentan.

Puede enfrentar otro tipo de dificultad: dificultades con las restricciones de envío. Para que su proceso de envío sea legal y rentable, use la extensión Restricciones de envío .

En lo que respecta a las API de Magento, Magento decidió ofrecer una alternativa viable a la arquitectura REST y al protocolo SOAP. Es GraphQL, un lenguaje de consulta específico desarrollado por Facebook en 2012 y lanzado al público en 2015. ¿Para qué? La comunidad de Magento se esfuerza por lograr una mayor flexibilidad y eficiencia, y GraphQL supera a los dos últimos en ambos. Consideremos algunos ejemplos.

GraphQL frente a REST API y SOAP API: ventajas clave

GraphQL proporciona 2 beneficios importantes: mejor orientación y rendimiento.

Ventaja n.º 1 Orientación mejorada

Al trabajar con GraphQL, puede indicar qué datos espera del servidor y obtener exactamente lo que solicitó. Aquí hay un ejemplo.

Digamos que necesita obtener el precio del producto con el SKU 24-MB05.

Con la API REST funciona de la siguiente manera:

Y así es como funciona con GraphQL:

Como podemos ver, REST extrae un montón de información totalmente irrelevante para la consulta, mientras que GraphQL extrae solo los datos necesarios.

Ventaja #2. Desempeño mejorado

La extracción de datos con GraphQl a menudo requiere solo 1 consulta, mientras que la misma operación con REST y SOAP necesita varias.

Digamos que necesitamos obtener el precio del producto con SKU 24-MB05 y el correo electrónico para el usuario con id 1.

¿Cómo lo conseguiremos con REST?

Agregue la consulta para extraer el correo electrónico del usuario 1 a la consulta para extraer el precio (arriba):

Con REST, obtenemos mucha información irrelevante. ¿Y qué pasa con GraphQL?

Echar un vistazo:

Obtenemos información exhaustiva sin ningún “ruido”.

Como podemos ver, GraphQL reduce el número de consultas al servidor, lo que mejora su rendimiento. ¿Qué significa para el usuario? Los resultados se entregarán más rápido y el retraso se reducirá al mínimo, si no nulo.

Trabajando con Magento 2 GraphQL

Paso 1. El comienzo

Empecemos el tutorial Magento 2 GraphQL. Y aquí viene el 1er tropiezo . Por el momento, una interfaz conveniente (como Swagger para REST API) no está disponible para magento 2.3 GraphQL. Entonces, para trabajar con esta herramienta, deberá instalar ChromeiQL , una extensión especial de Chrome. Después de la configuración, haga clic en el icono de la extensión. Llegarás a esta página:

Luego ingrese http://<magento-directory>/graphql en el campo Establecer punto final :

Ahora puedes partir. Desafortunadamente, los métodos disponibles no se muestran aquí como en Swagger. Así que tendrás que comprobar el código. Para encontrar los métodos disponibles, debe abrir los módulos de Magento y encontrar aquellos que terminan en graph-ql :

Ingrese cualquier módulo y busque el directorio etc. y luego – schema.graphqls . Ahora busque el tipo de bloque Consulta {}. Como aquí usamos module-catalog-graph-ql , las consultas disponibles son productos y categoría :

Paso #2 GraphQL: consultas con ejemplos

El lenguaje admite 2 tipos básicos de consultas:

  • escriba Consulta para lectura;
  • escriba Mutación para realizar operaciones CRUD.

Pero, ¿cómo escribir una consulta correctamente? Proporcionamos una guía simple a continuación.

GraphQL: ¿cómo escribir una consulta?

1. En primer lugar, tenemos que detectar el nombre de la consulta. Para hacerlo, simplemente verifique el archivo schema.graphqls y busque el tipo Consulta o escriba Mutación (dependiendo de la consulta en cuestión). Los nombres de las consultas se encuentran en el primer nivel de anidamiento:

2. Ahora decidamos qué información queremos obtener. Vamos a “cazar” los productos con precios superiores a 45.

Así que nuestra consulta es productos . Ahora tenemos que configurar los filtros. Así que buscamos el filtro necesario en ProductFilterInput :

3. Genial. Para agregar el filtro, debemos guardar la estructura tal como está en el archivo schema.graphqls . Ahora la consulta se ve así:

4. Ahora necesitamos configurar un nuevo filtro. Este atributo es del tipo FilterTypeInput . Busquemos el tipo entonces:

5. ¡Así se hace! Ahora lo agregamos a la consulta:

6. Luego detectamos cómo encontrar el nombre del archivo que necesitamos. Como recordarás, el tipo extraído es Productos . Aquí está:

7. Ahora verificamos page_info , total_count , filtros , sort_fields .

Los documentos de estos atributos muestran que no son lo que necesitamos. Así que nos quedamos con elementos del tipo ProductInterface .

Aquí está:

8. Ahora lo copiamos y agregamos a la consulta:

9.  Finalmente, podemos enviarlo a ChromeiQL y obtener los resultados:

Resumiendo

En un esfuerzo por hacer que el procesamiento de API sea más flexible, Magento amplió la cantidad de opciones para el procesamiento de consultas al agregar GraphQL, un lenguaje generado por Facebook. Entonces, ¿vale la pena tus esfuerzos?

Esto es lo que podemos decir con certeza:

  1. GraphQL ofrece una orientación mejorada. Mientras que REST y SOAP brindan los resultados necesarios acompañados de mucha información irrelevante, GraphQL brinda los datos que está buscando y nada más.
  2. GraphQL es más compacto. Como muestran los ejemplos, cuando REST y SOAP necesitan varias consultas, GraphQL solo requiere una. Esto mejora el rendimiento del servidor, lo que evita retrasos y mejora la experiencia del usuario.

Eso es todo por ahora. Continuaremos explorando el trabajo con GraphQL, así que permanezca atento.

¿Tienes alguna pregunta? Por favor envíenos una línea a continuación.