GraphQL - Introducción
GraphQL es una tecnología del lado del servidor de código abierto que fue desarrollada por Facebook para optimizar las llamadas a la API RESTful. Es un motor de ejecución y un lenguaje de consulta de datos. En este capítulo, analizamos las ventajas de usar GraphQL.
Por qué GraphQL
Las API RESTful siguen un enfoque claro y bien estructurado orientado a los recursos. Sin embargo, cuando los datos se vuelven más complejos, las rutas se hacen más largas. A veces, no es posible obtener datos con una sola solicitud. Aquí es donde GraphQL resulta útil. GraphQL estructura los datos en forma de gráfico con su potente sintaxis de consulta para recorrer, recuperar y modificar datos.
Las siguientes son las ventajas de usar el lenguaje de consulta GraphQL:
Pida lo que quiera y consígalo
Envíe una consulta GraphQL a su API y obtenga exactamente lo que necesita. Las consultas GraphQL siempre devuelven resultados predecibles. Las aplicaciones que utilizan GraphQL son rápidas y estables. A diferencia de los servicios Restful, estas aplicaciones pueden restringir los datos que deben obtenerse del servidor.
El siguiente ejemplo lo ayudará a comprender esto mejor:
Consideremos un objeto comercial Student con los atributos id, firstName, lastName y collegeName . Supongamos que una aplicación móvil tiene que ir a buscar sólo el primerNombre y ID . Si diseñamos un punto final REST como / api / v1 / Students , terminará obteniendo datos para todos los campos de un objeto Student . Esto significa que el servicio RESTful recupera datos en exceso. Este problema se puede resolver utilizando GraphQL.
Considere la consulta GraphQL dada a continuación:
{
students {
id
firstName
}
}
Esto devolverá valores solo para los campos id y firstname. La consulta no obtendrá valores para otros atributos del objeto de estudiante. La respuesta de la consulta ilustrada arriba es la que se muestra a continuación:
{
"data": {
"students": [
{
"id": "S1001",
"firstName": "Mohtashim"
},
{
"id": "S1002",
"firstName": "Kannan"
}
]
}
}
Obtenga muchos recursos en una sola solicitud
Las consultas GraphQL ayudan a recuperar sin problemas los objetos comerciales asociados, mientras que las API REST típicas requieren la carga desde varias URL. Las API GraphQL obtienen todos los datos que su aplicación necesita en una sola solicitud. Las aplicaciones que utilizan GraphQL pueden ser rápidas incluso en conexiones de red móviles lentas.
Consideremos un objeto comercial más, College , que tiene los atributos: nombre y ubicación. El objeto comercial Estudiante tiene una relación de asociación con el objeto Universidad. Si usáramos una API REST para obtener los detalles de los estudiantes y su universidad, terminaremos haciendo dos solicitudes al servidor como / api / v1 / Students y / api / v1 / colleges . Esto dará lugar a una búsqueda de datos insuficiente con cada solicitud. Entonces, las aplicaciones móviles se ven obligadas a realizar múltiples llamadas al servidor para obtener los datos deseados.
Sin embargo, la aplicación móvil puede obtener detalles de los objetos Student y College en una sola solicitud mediante GraphQL.
La siguiente es una consulta GraphQL para obtener datos:
{
students{
id
firstName
lastName
college{
name
location
}
}
}
El resultado de la consulta anterior contiene exactamente los campos que hemos solicitado como se muestra a continuación:
{
"data": {
"students": [
{
"id": "S1001",
"firstName": "Mohtashim",
"lastName": "Mohammad",
"college": {
"name": "CUSAT",
"location": "Kerala"
}
},
{
"id": "S1002",
"firstName": "Kannan",
"lastName": "Sudhakaran",
"college": {
"name": "AMU",
"location": "Uttar Pradesh"
}
},
{
"id": "S1003",
"firstName": "Kiran",
"lastName": "Panigrahi",
"college": {
"name": "AMU",
"location": "Uttar Pradesh"
}
}
]
}
}
Describe lo que es posible con un sistema de tipos.
GraphQL está fuertemente tipado y las consultas se basan en campos y sus tipos de datos asociados. Si hay una discrepancia de tipos en una consulta GraphQL, las aplicaciones del servidor devuelven mensajes de error claros y útiles. Esto ayuda a una depuración fluida y una fácil detección de errores por parte de las aplicaciones cliente. GraphQL también proporciona bibliotecas del lado del cliente que pueden ayudar a reducir la conversión y el análisis explícito de datos.
A continuación, se ofrece un ejemplo de los tipos de datos Student y College :
type Query {
students:[Student]
}
type Student {
id:ID!
firstName:String
lastName:String
fullName:String
college:College
}
type College {
id:ID!
name:String
location:String
rating:Float
students:[Student]
}
Muévase más rápido con potentes herramientas para desarrolladores
GraphQL proporciona herramientas de desarrollo completas para documentación y consultas de prueba. GraphiQL es una excelente herramienta que genera documentación de la consulta y su esquema. También proporciona un editor de consultas para probar las API de GraphQL y la capacidad de completar código inteligente mientras se crean consultas.