Get it on Google Play
Tu partner Freelance para tus proyectos IT

GraphQL en Liferay Headless CMS: Necesita mejorar

09-12-2019
Liferay + GraphQL

Liferay + GraphQL

Hoy he decidido trastear con la flamante, y anunciada a bombo y platillo, funcionalidad de conexión vía GraphQL con Liferay 7.2. <Modo irónico>Por lo visto sin ella no se puede ser un gestor de contenidos Head Less<Modo irónico>. La experiencia a sido decepcionante, si alguien cree que el título del post es duro, no hace honor a la realidad.

Introducción a GraphQL

GraphQL es un estándar para APIs que aporta grandes ventajas(Y alguna desventaja) frente a las APIs Rest a las que estamos acostumbrados. Por ejemplo, puedes hacer varias peticiones con una sola llamada y especificar exactamente los campos que quieres recibir(Ahorro de tiempo y ancho de banda), organiza el API por tipos y no por ‘endpoints’, permite hacer cambios a la API simplemente añadiendo campos y tipos sin impactar en las integraciones existentes, etc.

La principal contra de esta tecnología es que es mas compleja de entender, pero sobretodo, es mucho mas complicado de implementar que una API Rest tradicional.

Liferay y los Headless

Liferay se esta intentando posicionar a marchas forzadas como gestor de contenidos HeadLess, y parece que para ello necesita anunciar a bombo y platillo soporte a GraphQL. El motivo de esto es que el mercado se mueve rápido y este tipo de gestores de contenido o los microservicios entre otros, podrían desplazarlo rápido.

La verdad es que Liferay con su soporte tradicional a las APIs y con su potencia como gestor de contenidos ya es una de las mejores alternativas como HeadLess CMS. Pero por lo visto, son incapaces de comunicar su valor y evolucionar el producto como líderes que son(Esto se podría describir como complejo de inferioridad).

En resumen, últimamente se venden mucho a golpe de ‘hype’ ofreciendo soluciones poco confiables que seguro les pasa factura. No solo con GraphQL, también con soluciones de eCommerce o Audience Targeting, por ejemplo.

El estado actual de la implementación de GraphQL

No se puede recomendar a nadie que se embarque en un proyecto confiando en las posibilidades de integración vía GraphQL(Otra cosa son los desarrollos propios con GraphQL).

No existe un fichero para consultar el Schema del API ni mucho menos una documentación unificada. No puedes entregar una API y esperar que la gente la utilice sin esto(Aunque Liferay sea Software Libre y tengas acceso al código fuente).

Si queréis empezar a usar Liferay con GraphQL

Si queréis integraros con Liferay vía GraphQL os recomiendo que os descarguéis el código fuente del portal y busquéis en el código la anotación “@GraphQLField”. Por ejemplo, mediante grep:

grep -R -n "@GraphQLField" *
Liferay + GraphQL: greep search

Liferay + GraphQL: greep search

Esto os devolverá el listado de classes donde se declaran peticiones y podréis consultar tipos, campos, parámetros, etc.

Liferay + GraphQL: request impl

Liferay + GraphQL: request impl

A partir de aquí, si por ejemplo queremos saber los sites a los que pertenece un usuario podriamos ejecutar con curl(O cualquier otra aplicación):

curl -X POST http://127.0.0.1:8080/o/graphql \
	-H 'Content-Type: text/plain; charset=utf-8' \
	-d '{"query": "query {myUserAccounts(page: 1, pageSize: 90){items { id,name,friendlyUrlPath }, page, pageSize, totalCount}}"}' \
	-u '[email protected]:test'

En fin, espero que os sirva… Si estáis interesado en vídeos acerca de GraphQL ya sabeis 😀 comentarios y compartir. Que es la manera que tenemos para obtener feedback y nos ayuda muchísimo ha hacer crecer el blog y el canal de Youtube.

Si te ha servido, por favor comparte

Interesado en formación Liferay?

 

Comments

3 Responses to “GraphQL en Liferay Headless CMS: Necesita mejorar”
  1. Javier says:

    Buenas!

    Teníamos que haber dejado el fichero el sdl por alguna parte… pero soportamos las queries de introspección… si cargas el endpoint (localhost:8080/o/graphql) en algún visor de GraphQL (recomiendo Altair: https://chrome.google.com/webstore/detail/altair-graphql-client/flnheeellpciglgpaodhkhmapeljopja?hl=en, pero cualquier GraphiQL vale) te cargará y listará todos los endpoints/entidades.

    La documentación está disponible aquí: https://portal.liferay.dev/docs/7-2/frameworks/-/knowledge_base/f/graphql-apis (y está desordenada, ya se lo he comentado a documentación 2 veces, porque hay más páginas que han dejado aquí en la parte de headless).

    Perdona la experiencia… cualquier feedback es bien recibido 🙂

  2. Javier says:

    De hecho las dos páginas clave de documentación están en la categoría de headless (sigh), cómo encontrar los endpoints y cómo usarlos:
    https://portal.liferay.dev/docs/7-2/frameworks/-/knowledge_base/f/get-started-discover-the-api y https://portal.liferay.dev/docs/7-2/frameworks/-/knowledge_base/f/get-started-invoke-a-service

Leave a Reply