Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3

Rate this content
Bookmark

El ecosistema frontend avanza a un ritmo frenético. Este masterclass tiene como objetivo equipar a los participantes con una comprensión del estado del ecosistema Vue 3 + GraphQL, explorando ese ecosistema - prácticamente y a través del desarrollo de aplicaciones de pila completa.

Tabla de contenidos
- Los participantes utilizarán Hasura para construir una API GraphQL en tiempo real respaldada por Postgres. Juntos recorreremos su consumo desde un frontend y haremos que el frontend sea reactivo, suscrito a los cambios de datos.
- Además, analizaremos las herramientas comúnmente utilizadas en el stack Vue GraphQL (como Apollo Client y Urql), discutiremos algunas alternativas menos conocidas y abordaremos los problemas frecuentemente encontrados al comenzar.
- Se describirán varios patrones para gestionar datos con estado y sus compensaciones durante el masterclass, y se mostrará una implementación básica para cada patrón discutido.
Nivel del masterclass

NOTA: No se requiere experiencia previa con GraphQL, pero puede ser útil para ayudar a la comprensión. Se cubrirán los fundamentos.

FAQ

GraphQL es una tecnología que permite a los desarrolladores solicitar exactamente los datos que necesitan, sin más ni menos. Mejora la ergonomía de las API al permitir la creación de APIs más flexibles y eficientes en comparación con la arquitectura RESTful, reduciendo así el número de llamadas a la API y la cantidad de datos transferidos.

Hasura es un motor de GraphQL que facilita la construcción de aplicaciones CRUD al permitir a los desarrolladores tomar una fuente de datos como Postgres, MySQL, SQL Server, entre otros, y crear automáticamente una API CRUD en tiempo real con autenticación y funciones adicionales como permisos y uniones de datos.

GraphQL permite a los desarrolladores solicitar múltiples recursos en una sola llamada a la API, mientras que REST requiere múltiples llamadas para obtener diferentes tipos de recursos. Además, GraphQL permite especificar exactamente qué campos se desean, lo que evita recibir datos innecesarios, optimizando así las respuestas de la API.

Las suscripciones en GraphQL permiten a los clientes recibir datos en tiempo real cada vez que se actualiza un dato relevante en el servidor. Funcionan sobre WebSockets, facilitando la construcción de interfaces de usuario reactivas y dinámicas al notificar a los clientes sobre los cambios en la base de datos de manera instantánea.

Hasura Cloud es una versión administrada del producto de código abierto de Hasura que ofrece características adicionales como análisis, límites de velocidad y seguridad mejorada. Proporciona una infraestructura robusta para desplegar aplicaciones GraphQL a gran escala, optimizando la gestión y el desempeño de las aplicaciones.

GraphQL Code Generator es una herramienta que genera código tipado para diferentes frameworks a partir de esquemas GraphQL. Facilita la integración y el desarrollo en el cliente al proporcionar autocompletado y validación de tipos en tiempo de desarrollo, asegurando que las consultas y mutaciones cumplan con el esquema definido.

Gavin Ray
Gavin Ray
115 min
19 Oct, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

GraphQL es una herramienta poderosa para construir APIs, ofreciendo flexibilidad en la recuperación de datos y funcionalidad en tiempo real. Simplifica la documentación de la API y mejora el desarrollo con verificación de tipos y generación de código. Hasura es un motor GraphQL popular que admite suscripciones, permisos e integraciones de bases de datos. El masterclass cubre temas como la configuración de APIs GraphQL, el manejo de permisos y seguridad, la integración de autenticación y el uso de GraphQL con Vue.js. También se discuten varias bibliotecas y herramientas para trabajar con APIs GraphQL y la gestión de estado.

1. Introducción a la API de GraphQL

Short description:

Cubriremos la comparación entre la arquitectura RESTful y la construcción de API de GraphQL. El motor GraphQL de Hasura te permite crear un gráfico de datos unificado al crear una API CRUD en tiempo real con autenticación y otras características. Es de código abierto. En una API REST, hacer una llamada a la API requiere múltiples llamadas y puede llevar a una arquitectura de API compleja. GraphQL resuelve este problema al proporcionar automáticamente los datos que solicitas.

Entonces, um, trataremos de ir a un ritmo moderado. Algunas personas pueden estar muy familiarizadas con esto, otras no tanto. Pero, uh, sí, vamos a cubrir esto. Así que hay un par de cosas realmente increíbles sobre la API de GraphQL, GraphQL y una de ellas es la ergonomía de la API. Esto básicamente va a explicar, um, la arquitectura RESTful en comparación con la construcción de API de GraphQL, lo cual creo que es algo con lo que todos podremos establecer paralelismos seguro que todos hemos construido una aplicación CRUD en nuestras vidas. Así que soy un evangelista técnico de una empresa llamada Hasura. Es un motor de GraphQL. Um, muy genial. Básicamente, te permite tomar una fuente de datos, que puede ser Postgres, podría ser MySQL, SQL Server, podrían ser otras API que pueden ser REST o GraphQL y básicamente crea automáticamente una API CRUD en tiempo real con autenticación y algunas otras cosas interesantes encima de ella y te permite asignar permisos y unir data entre fuentes de data como si fuera un solo gráfico de data unificado. Uh, ah, y también es de código abierto. Así que uh, hablaremos de una llamada a la API. Entonces, en una API REST, cuando haces una llamada a la API, ¿verdad? Um, haces algo como obtener API, barra diagonal usuario, y pasas un ID y obtienes esta, uh, respuesta HTTP. Uh, vamos a verificar. Lo siento. ¿Alguien tiene sonido? Lo siento, hay como un montón de mensajes. Uh, ¿funciona mi audio para todos? Sí. Sí. De acuerdo. De acuerdo. Gracias. Gracias a todos. Um, de acuerdo. Sí, entonces tienes alguna aplicación, uh, y tu aplicación va a hacer una llamada a una API. Las solicitudes GET podrían verse así y va a devolver una respuesta HTTP, ¿verdad? Algo de JSON que se ve así, ¿verdad? Así que tenemos a Elmo. Si queremos más información, ¿verdad? Como, ¿qué pasa si queremos la dirección de Elmo?, entonces necesitamos llamar a la API de dirección y necesitamos darle el ID de usuario que acabamos de solicitar a través de REST. Así que eso son dos llamadas a la API. Y eso solo empeora. Um, y puedes paralelizar estas llamadas a la API en REST, puedes agruparlas. Puedes crear API personalizadas que devuelvan, ya sabes, formas exactas de data. Pero básicamente este problema va a persistir sin importar lo que hagas porque esa es la naturaleza de REST. Voy a mover esta ventana de chat. Si piensas en una página, ¿verdad? No estás renderizando solo una entidad aislada. Entonces, si piensas en un usuario y tienes un modelo de data jerárquico, probablemente quieras renderizar ese usuario. Es posible que desees renderizar su dirección, es posible que desees renderizar su historial de pedidos, es posible que desees renderizar una lista de amigos. Hay esta jerarquía en cascada de dependencias e interrelaciones, y todas estas necesitan resolverse en las solicitudes a la API. Así que digamos que tenemos un problema, ¿verdad? Obtenemos una nueva... Como una aplicación móvil diseñada para una página y es realmente complicada, y requeriría como ocho llamadas REST. Así que volvemos a nuestros desarrolladores de API y ellos dicen, oye... ¿Podrías escribirme solo esta llamada especial a la API que devuelve esta forma exacta de data? Porque eso me facilitaría mucho la vida. Y así obtienes esta nueva llamada especializada a la API, ¿verdad? Entonces dicen, de acuerdo, bien. Y obtienes este punto final de la API de información de usuario y ahora tienes a Elmo y su dirección. Entonces el problema es que si sigues haciendo esto, lo que va a suceder es que tu architecture de API se convertirá en un absoluto desastre. Y terminas con más y más de estas llamadas especializadas a la API, o simplemente tienes más y más llamadas REST intercaladas y dependientes en cascada. Y entonces una cosa que podrías hacer es decir, bueno, ya sabes qué, voy a implementar algún tipo de filtro de campos. Así que solo voy a pedir los campos que quiero. Y eso funciona. Es un poco de un parche de cinta adhesiva, pero funciona. Pero con GraphQL, no tienes que hacer eso. Con GraphQL, la forma en que funciona es que los data que quieres se obtienen automáticamente es el data que solicitaste. Así que si quieres a Elmo, quieres su nombre, quieres su dirección en la calle,

2. Conceptos básicos de la API de GraphQL

Short description:

Los modelos de API suelen tener una estructura similar a un grafo, lo que hace que las bases de datos relacionales sean populares. GraphQL permite la recuperación flexible de datos con control sobre la jerarquía. GraphQL es una especificación, no una tecnología especial, para manejar las solicitudes y respuestas de la API. Utiliza un único punto final y admite solicitudes POST con campos de consulta y variables. Las mutaciones en GraphQL actúan como publicaciones, actualizaciones y eliminaciones. La consulta se utiliza para obtener información, mientras que las mutaciones se utilizan para modificar datos.

simplemente envías una carga útil a través de la red. Esto es, Hola, me gustaría JSON en esta estructura y la API dice, de acuerdo, aquí lo tienes. Es un poco más complicado que eso, pero esa es la premisa. Um, así que hay un par de ideas clave aquí. Y una de ellas es que casi siempre los modelos de tu API, uh, tienen una estructura similar a un grafo, uh, y por eso las bases de datos relacionales son tan populares. Um, no es muy común encontrarse, uh, escribiendo entidades que no tengan algún tipo de relación y que sean solo modelos planos y desconectados de todo. De acuerdo. Cuando estás recorriendo este grafo de datos, um, quieres controlar los datos que obtienes, porque no quieres, no quieres, no quieres obtener toda esta jerarquía de datos. Uh, pero al mismo tiempo, realmente deseas la flexibilidad de decir, uh, necesito este modelo, pero también solo uno o dos campos de un modelo hijo o padre. Um, y GraphQL te permite hacer eso. Entonces, la forma en que funciona un grafo, la forma en que funciona GraphQL es, uh, tienes tres tipos de operaciones. Entonces tienes consultas, mutaciones y suscripciones, um, donde las consultas se mapean al verbo GET, ¿verdad? Cuando piensas en una API REST, cumplen el papel de lo que normalmente se usaría para las solicitudes GET. Entonces, esta consulta de GraphQL está diciendo, Hola, quiero un usuario. Me gustaría su ID y nombre. Quiero la dirección del usuario, uh, relación. Um, y quiero la calle, uh, de la dirección del usuario, ¿verdad? Así que la dirección del usuario, la calle. Y quiero que sea solo para el usuario con el ID. Uno y la forma en que esto funciona internamente, um, no hay mucha magia aquí. Um, así que GraphQL es solo una solicitud HTTP regular. Entonces, si sabes cómo hacer una solicitud POST o una solicitud GET y una solicitud PUT, usando curl o Postman o usando la API fetch, ya sabes cómo usar GraphQL. Um, mucha gente piensa que GraphQL es algún tipo de tecnología especial o protocolo, uh, que se admite, pero no lo es, uh, es solo una especificación de cómo tu API debe manejar las solicitudes y respuestas, al igual que REST.

Entonces, la forma en que funciona GraphQL es que tienes un único punto final y, uh, acepta solicitudes POST. Por lo general, puedes permitir que acepte solicitudes GET, pero es inusual. Y básicamente solo envías una, uh, una solicitud fetch a esta API, que es de tipo application/json. Y solo hay dos campos, uh, que necesitas incluir aquí. Entonces uno es la consulta. Aquí está nuestra consulta. Y, um, esto simplemente se incluiría en un objeto de cuerpo de solicitud fetch, uh, en JavaScript. Uh, el otro, uh, que probablemente veremos en un segundo, son las variables, uh, que te permitirán sustituir una variable real por cosas como el ID. Y luego el tercero, uh, esto es opcional, es darle un nombre de operación y eso se usa principalmente para cosas como métricas, análisis y seguimiento, solo para que puedas saber qué operaciones se están ejecutando. Es como, um, es como una etiqueta de operación, ¿verdad? Entonces enviamos la consulta de GraphQL como una cadena en JSON a nuestra API. Y lo que obtenemos a cambio, uh, es solo un objeto JSON que se ve exactamente como el objeto de consulta, uh, que enviamos en la solicitud. Entonces, cuando escribirías a una API REST, uh, normalmente harías una solicitud POST a algo como /API/tarea, uh, le darías una tarea, y luego enviaría este 200. De acuerdo. Y diría, bien, hombre, hice esta tarea y aquí está tu nuevo ID de tarea. Um, la forma de hacer esto en GraphQL es usando mutaciones y las mutaciones cumplen el papel de varios verbos HTTP. Um, que podríamos ver en un segundo. Entonces, las mutaciones actúan como publicaciones, las mutaciones actúan como parches o actualizaciones y las mutaciones también actúan como eliminaciones. Entonces, puede ser obvio por el nombre, pero la consulta se utiliza para obtener información y las mutaciones se utilizan para modificar, uh, datos. Aquí vemos un ejemplo de mutación donde agregamos una tarea, y toma este signo de dólar como una variable. Entonces decimos que toma una tarea, um, variable llamada nueva tarea y devuelve el ID. Y luego, cuando enviamos esto en nuestra solicitud HTTP, lo único que necesitamos hacer es darle una nueva clave de variables que tenga la nueva tarea y la tarea que queremos. Entonces, uh, puedes verlo aquí mismo, es la nueva tarea de GraphQL. Vamos a retroceder la diapositiva. Um, ahora quiero volver atrás. Uh, es lo mismo. Así que solo toma, toma tus datos y colócalos bajo el nombre de variable y la mutación. Y luego, nuevamente, obtendrás esta respuesta 200 y te dará este ID porque el ID es

QnA

Watch more workshops on topic

Construir con SvelteKit y GraphQL
GraphQL Galaxy 2021GraphQL Galaxy 2021
140 min
Construir con SvelteKit y GraphQL
Top Content
Featured WorkshopFree
Scott Spence
Scott Spence
¿Alguna vez has pensado en construir algo que no requiera mucho código de plantilla con un tamaño de paquete pequeño? En esta masterclass, Scott Spence irá desde el hola mundo hasta cubrir el enrutamiento y el uso de endpoints en SvelteKit. Configurarás una API de GraphQL en el backend y luego usarás consultas de GraphQL con SvelteKit para mostrar los datos de la API de GraphQL. Construirás un proyecto rápido y seguro que utiliza las características de SvelteKit, y luego lo desplegarás como un sitio completamente estático. Este curso es para los curiosos de Svelte que no han tenido una experiencia extensa con SvelteKit y quieren una comprensión más profunda de cómo usarlo en aplicaciones prácticas.

Tabla de contenidos:
- Inicio e introducción a Svelte
- Inicializar el proyecto frontend
- Recorrido por el proyecto esqueleto de SvelteKit
- Configurar el proyecto backend
- Consultar datos con GraphQL
- Recuperación de datos en el frontend con GraphQL
- Estilización
- Directivas de Svelte
- Enrutamiento en SvelteKit
- Endpoints en SvelteKit
- Despliegue en Netlify
- Navegación
- Mutaciones en GraphCMS
- Envío de mutaciones GraphQL a través de SvelteKit
- Preguntas y respuestas
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Top Content
Featured WorkshopFree
Mikhail Kuznetcov
Mikhail Kuznetcov
Vue3 fue lanzado a mediados de 2020. Además de muchas mejoras y optimizaciones, la principal característica que trae Vue3 es la API de Composición, una nueva forma de escribir y reutilizar código reactivo. Aprendamos más sobre cómo usar la API de Composición de manera eficiente.

Además de las características principales de Vue3, explicaremos ejemplos de cómo usar bibliotecas populares con Vue3.

Tabla de contenidos:
- Introducción a Vue3
- API de Composición
- Bibliotecas principales
- Ecosistema Vue3

Requisitos previos:
IDE de elección (Inellij o VSC) instalado
Nodejs + NPM
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
JSNation 2023JSNation 2023
174 min
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
Top Content
Featured WorkshopFree
Alba Silvente Fuentes
Roberto Butti
2 authors
Esta masterclass de SvelteKit explora la integración de servicios de terceros, como Storyblok, en un proyecto SvelteKit. Los participantes aprenderán cómo crear un proyecto SvelteKit, aprovechar los componentes de Svelte y conectarse a APIs externas. La masterclass cubre conceptos importantes incluyendo SSR, CSR, generación de sitios estáticos y despliegue de la aplicación usando adaptadores. Al final de la masterclass, los asistentes tendrán una sólida comprensión de la construcción de aplicaciones SvelteKit con integraciones de API y estarán preparados para el despliegue.
Seguridad de tipo de extremo a extremo con React, GraphQL y Prisma
React Advanced Conference 2022React Advanced Conference 2022
95 min
Seguridad de tipo de extremo a extremo con React, GraphQL y Prisma
Featured WorkshopFree
Sabin Adams
Sabin Adams
En este masterclass, obtendrás una visión de primera mano de lo que es la seguridad de tipo de extremo a extremo y por qué es importante. Para lograr esto, construirás una API de GraphQL utilizando herramientas modernas y relevantes que serán consumidas por un cliente de React.
Prerrequisitos: - Node.js instalado en tu máquina (12.2.X / 14.X)- Se recomienda (pero no es obligatorio) utilizar VS Code para las tareas prácticas- Un IDE instalado (se recomienda VSCode)- (Bueno tener) *Un conocimiento básico de Node.js, React y TypeScript
GraphQL para Desarrolladores de React
GraphQL Galaxy 2022GraphQL Galaxy 2022
112 min
GraphQL para Desarrolladores de React
Featured Workshop
Roy Derks
Roy Derks
Hay muchas ventajas en utilizar GraphQL como fuente de datos para el desarrollo frontend, en comparación con las API REST. Nosotros, los desarrolladores, por ejemplo, necesitamos escribir mucho código imperativo para recuperar datos y mostrarlos en nuestras aplicaciones y manejar el estado. Con GraphQL, no solo puedes reducir la cantidad de código necesario para la obtención de datos y la gestión del estado, sino que también obtendrás una mayor flexibilidad, mejor rendimiento y, sobre todo, una mejor experiencia de desarrollo. En este masterclass aprenderás cómo GraphQL puede mejorar tu trabajo como desarrollador frontend y cómo manejar GraphQL en tu aplicación frontend de React.
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
WorkshopFree
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Vue.js London Live 2021Vue.js London Live 2021
34 min
Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Top Content
Cuando pensamos en Vuex, Pinia, o tiendas en general, a menudo pensamos en la gestión de estado y los patrones Flux, pero no solo las tiendas no siempre siguen el patrón Flux, ¡hay mucho más en las tiendas que las hace valer la pena usar! Plugins, Devtools, renderizado en el lado del servidor, integraciones TypeScript... Vamos a sumergirnos en todo más allá de la gestión de estado con Pinia con ejemplos prácticos sobre plugins y Devtools para sacar el máximo provecho de tus tiendas.
Bienvenido a Nuxt 3
Vue.js London Live 2021Vue.js London Live 2021
29 min
Bienvenido a Nuxt 3
Top Content
Explica sobre la refactorización del código base de NuxtJS y los desafíos que enfrenta para implementar Vue 3, Vite y otros paquetes.
Un Año en Vue 3
Vue.js London Live 2021Vue.js London Live 2021
20 min
Un Año en Vue 3
Top Content
Vue 3 puede sonar aún nuevo para muchos usuarios, pero en realidad ya ha sido lanzado hace más de un año. ¿Cómo evolucionó Vue 3 durante este período? ¿Por qué tardó tanto en ponerse al día el ecosistema? ¿Qué aprendimos de este proceso? ¿Qué viene después? ¡Discutiremos estas preguntas en esta charla!
Utilizando Rust desde Vue con WebAssembly
Vue.js London Live 2021Vue.js London Live 2021
8 min
Utilizando Rust desde Vue con WebAssembly
Top Content
Rust es un nuevo lenguaje para escribir código de alto rendimiento, que puede ser compilado a WebAssembly, y ejecutado dentro del navegador. En esta charla se te guiará sobre cómo puedes integrar Rust, dentro de una aplicación Vue, de una manera que es sencilla y fácil. Con ejemplos de cómo interactuar con Rust desde JavaScript, y algunas de las trampas a tener en cuenta.
Vue: Actualizaciones de Características
Vue.js London 2023Vue.js London 2023
44 min
Vue: Actualizaciones de Características
Top Content
El creador de Vue js da una actualización sobre las nuevas características de la tecnología.
De GraphQL Zero a GraphQL Hero con RedwoodJS
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
De GraphQL Zero a GraphQL Hero con RedwoodJS
Top Content
Todos amamos GraphQL, pero puede ser desalentador poner en marcha un servidor y mantener tu código organizado, mantenible y testeable a largo plazo. ¡No más! Ven a ver cómo paso de un directorio vacío a una API GraphQL completamente desarrollada en cuestión de minutos. Además, verás lo fácil que es usar y crear directivas para limpiar aún más tu código. ¡Vas a amar aún más GraphQL una vez que hagas las cosas Redwood Easy!