Entonces, una fuente de datos puede ser una database, una función que está fuera del propio servicio principal o un punto final HTTP para incorporar una architecture de microservicios en una API de GraphQL.
Hablemos ahora de la parte de recuperación de datos de GraphQL, que es realmente interesante. Con GraphQL, es posible que estés familiarizado con Rust, por lo que creo que es muy conveniente e interesante comparar los dos, GraphQL versus Rust. Con GraphQL, tienes esta idea de consultas, mutaciones y suscripciones, y se mapean muy bien a cosas que hemos hecho en el mundo de Rust, como mapear a los verbos HTTP con los que trabajamos. Entonces, cuando necesitas leer algunos datos, como obtener o listar una lista de elementos, utilizarás una consulta de GraphQL. Si vas a actualizar, crear o eliminar algo, normalmente utilizarás una mutación, y si necesitas algún tipo de aspecto en tiempo real en tu API, utilizarás suscripciones.
Echemos un vistazo a una tabla de verbos de GraphQL versus Rust. Nuevamente, mapear una solicitud Get tiene mucho sentido con una consulta de GraphQL. Obtener un elemento por ID o obtener una lista de elementos normalmente será una consulta de GraphQL. Y luego, las operaciones de post, put, delete o patch serán mutaciones de GraphQL. Dicho esto, veamos cómo GraphQL devuelve los datos que has solicitado, como mencionamos hace un momento. En una consulta, puedes decir, `Tenemos este tipo de tarea en GraphQL y tiene cuatro campos. Tiene un ID, un nombre y un valor de createdAt o campos`. Y en esta solicitud, queremos obtener los cuatro campos, así que está bien. Pero también puedes decir que solo quieres obtener un subconjunto o una selección más pequeña de estos campos, y esto seguirá funcionando. No tienes que hacer ninguna actualización en tu backend. La forma en que está construido GraphQL, la forma en que se crean estas consultas, solo obtienes los datos que has solicitado. Entonces, si alguna vez has trabajado en la construcción de diferentes tipos de aplicaciones de cliente para un solo backend en el mundo moderno, es posible que tengas una aplicación web, una aplicación móvil, una aplicación de escritorio que también puede tener una aplicación para Apple Watch o incluso una aplicación para automóviles en el futuro, nunca se sabe. Tener GraphQL como fuente de datos te permite tener mucho más control sobre el acceso a tus datos sin tener que cambiar mucho código en tu backend una vez que se completa la implementación.
A continuación, hablemos de las suscripciones de GraphQL, que son el aspecto en tiempo real de GraphQL. Las suscripciones de GraphQL permiten la comunicación en tiempo real entre un cliente y una API. Las suscripciones se basan en eventos. Entonces, cuando creas, actualizas o eliminas un elemento, es posible que puedas suscribirte a ese evento. Normalmente, una suscripción puede tener un nombre como onCreate, onUpdate o onDelete. Por ejemplo, para una aplicación de tareas, podrías tener onCreateTask, onUpdateTask, etc. Las suscripciones suelen ser una conexión bidireccional. Por lo tanto, debes tener una forma de enviar la actualización y luego recibir la actualización de vuelta en el cliente. Muchas veces, te preguntarán cómo implementar las suscripciones de GraphQL. Si estás utilizando un servicio como Hasura o AppSync, o cualquiera de estos servicios de GraphQL, esto se encargará de ti. Pero si estás construyendo tu propia API, normalmente tendrás que tomar la decisión entre servidores y eventos o websockets.
Comments