notifications Notificaciones

Marcar todas como leídas

Ver más

Obtén acceso ilimitado a éste y todos nuestros cursos con tu suscripción Premium

Qué es GraphQL

Abrir temario playlist_play

Lo lees en 3 Min.

GraphQL engloba dos elementos principalmente, por un lado un lenguaje de consulta que le permite a los clientes que consumen un servicio web, especificar qué datos necesitan. Por otro lado, es un entorno de ejecución para responder a estas consultas a través de la especificación de un esquema tipado en el que se enlistan los datos que el servicio web puede entregar y las operaciones para dar respuesta a las solicitudes de los clientes.

Portada del artículo con el título Qué es GraphQL y el logo de la tecnología

Entonces, hay una definición completa de cómo consultar datos, piensa como el lenguaje SQL te permite hacer N cantidad de cosas con los datos de una base de datos, el lenguaje de GraphQL es similiar aunque mucho más limitado para un servicio web.

Una consulta con el lenguaje de GraphQL se ve como aparece en pantalla:


{
  courses {
    title
  }
}

El lenguaje de consultas de GraphQL es muy expresivo y es parte fundamental de la tecnología, ya que nos permite declarar qué información queremos del servicio web de manera detallada, en el ejemplo anterior podemos asumir que queremos los cursos, PERO, únicamente el título de ellos.

A diferencia de las alternativas a GraphQL donde las respuestas para una consulta están predefinidas y no pueden modificarse por parte del cliente, las consultas de GraphQL son dinámicas, el cliente dice qué quiere y en qué formato lo quiere.

La pregunta es, cómo puede GraphQL entender estas queries y dar una respuesta apropiada.

Aquí es donde el entorno de ejecución entra en juego, usando un lenguaje de backend y las librerías correspondientes de GraphQL, uno puede definir un esquema en donde se especifique qué datos expondremos, cuál es su formato, de qué tipo son los datos que se exponen, y el código que dará respuesta a las consultas.

Un esquema puede verse como ves en pantalla:

type Course{
   id: ID!
   title: String!
   views: Int
 }
type Query {
   courses(page: Int,limit: Int = 1): [Course]
   course(id : ID!): Course
 }

Ahí se especifica por un lado el tipo curso y sus propiedades, además de las operaciones de consulta que se pueden realizar y qué retornan dichas operaciones.

Cuando intentamos hacer una consulta a un servicio web de GraphQL, el cliente descarga el esquema, y en base a la información ahí provista puede saber qué operaciones realizar y qué datos puede consultar, por ejemplo, puede saber que de un curso podrá obtener un id, un título o las vistas.

Además de esta definición de tipos, el esquema se compone de una serie de resolvers, como los llamamos en la terminología de GraphQL, estos resolvers son funciones que dan respuesta a las consultas realizadas. En el caso del esquema actual, se requerirían dos resolver, uno para la consulta courses y otro para course.

Estos resolvers de nuevo, son simplemente funciones que responden a las consultas, quizás trayendo los datos de una base de datos, de un arreglo, de otro servicio web, eso ya no importa, solo tienen que retornar los recursos apropiados.

En base a los datos que retornan los resolvers, GraphQL filtrará la información para únicamente entregar lo que se solicitó en la consulta, de manera que si siguiendo con nuestro ejemplo el resolver de courses retorna el siguiente arreglo:

[
 { id: "1", title: 'Curso de GraphQL', views: 1000 },
 { id: "2", title: 'Curso de JavaScript', views: 50000 }
]

GraphQL filtrará las propiedades y sólo dejará el title para una consulta como la antes vista:


{
  courses {
    title
  }
}

Esto quiere decir que tú no necesitas filtrar ni interpretar la consulta, las herramientas de implementación de GraphQL lo hacen por ti.

Luego de implementar el servidor, recibiríamos una respuesta como esta a la consulta antes realizada:

{
 "data": {
   "courses": [
     {
       "title": "Curso de GraphQL"
     },
     {
       "title": "Curso de JavaScript"
     }
   ]
 }
}

Tenemos los cursos, pero únicamente la propiedad title que solicitamos.

A lo largo del curso irás aprendiendo mucho más acerca de ambos elementos, el lenguaje de consulta y el entorno de ejecución para dar respuesta a estas consultas. En este tema, por ejemplo, no hemos hablado aún de mutaciones, otra operación importante en GraphQL, ni hemos visto detalles de la consulta, sin embargo, creo que la explicación nos deja un panorama claro de qué es GraphQL.

Ahora sigamos para pronto comenzar a implementar nuestro propio servidor.

Acerca del curso

GraphQL engloba dos cosas: Primero, un lenguaje de consulta para servicios web, y segundo un entorno para responder a estas consultas con la información del servicio web.

Con GraphQL desarrollar servicios web, y sobre todo consumirlos, es más fácil, productivo y dinámico.

El lenguaje de consulta ofrece la posibilidad de consultar solo por la información que necesitas, lo que a su vez acelera el desarrollo de clientes como aplicaciones móviles, SPA's de JavaScript, entre otros, además de que normalmente acelera la carga de información al reducir las consultas constantes al servicio web a través de la red.

En este curso aprenderás qué es GraphQL, los conceptos fundamentales de la tecnología y sobre todo, cómo crear tu propio servicio web con NodeJS. Aprenderás progresivamente como ir desde tu primer servidor sencillo de GraphQL, hasta una implementación real con conexión a base de datos, autenticación de usuarios y relaciones.

Al finalizar el curso entenderás claramente los conceptos importantes de GraphQL y cómo desarrollar tus propios servicios web.