0% encontró este documento útil (0 votos)
55 vistas13 páginas

Introducción a GraphQL y sus ventajas

GraphQL es un lenguaje de consulta para APIs y un entorno de ejecución que permite a los clientes: 1) Definir de forma precisa los datos que necesitan devolviendo solo la información requerida. 2) Obtener múltiples recursos en una única petición reduciendo la sobrecarga. 3) Tener un sistema de tipos fuerte que valida las consultas y devuelve errores cuando no coinciden los tipos.

Cargado por

Belen Echeverria
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
55 vistas13 páginas

Introducción a GraphQL y sus ventajas

GraphQL es un lenguaje de consulta para APIs y un entorno de ejecución que permite a los clientes: 1) Definir de forma precisa los datos que necesitan devolviendo solo la información requerida. 2) Obtener múltiples recursos en una única petición reduciendo la sobrecarga. 3) Tener un sistema de tipos fuerte que valida las consultas y devuelve errores cuando no coinciden los tipos.

Cargado por

Belen Echeverria
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

GRAPHQL

Desarrollo de Software en Sistemas Distribuidos

1
GraphQL es un lenguaje de consulta
de datos, pero también un entorno
de ejecución, porque permite llevar
GRAPHQL a cabo las consultas
responsabilizándose del análisis y
Lenguaje de Consulta - Entorno validación de estas además de la
serialización de las respuestas (es
de Ejecución
decir, convertir el objeto a devolver)
[Link]

2
Conceptos Previos

RPC SOAP RESTFULL

Obtener aplicaciones Basado en XML El más popular


que funcionan ● Interface de invocación a ● Interfaz común,
exactamente igual en un una función distribuida operaciones GET,
ambiente centralizado similar a RPC. POST, PUT y DELETE.
que distribuido. ● describe el formato de ● No tienen estado ni
● Pasaje de parámetros los mensajes que utiliza acceden a información
● Binding y a cuales puede de contexto.
● Tratamiento de excepciones responder. ● Permite transmitir
● Trasparencia de la
● Menor Flexibilidad. XML, JSON, Text.
representación de datos

3
Problemas de REST
Overfetching (Sobrecarga) Underfetching (captura ineficiente) Gestión de Enpoints

Una respuesta supera las Varias consultas para A medida que cambian
necesidades de datos de obtener una cantidad de las necesidades del
nuestra aplicación. información necesaria cliente, normalmente
tiene que crear nuevos
enpoints, y esos puntos
finales pueden comenzar
a multiplicarse
rápidamente.

Con GRAPHQL, la arquitectura típica implica un único endpoint sobre el cual definimos “qué” queremos
consultar y “cómo” debe ser el formato de la respuesta.
4
Ventajas GRAPHQL
Exactamente lo que Muchos recursos en Sistema
Otros
necesito una misma petición de Tipos

Con GraphQL se pueden Las consultas GraphQL GraphQL es Otros


restringir los datos que recuperan los objetos fuertemente tipado ● Introspección
deben obtenerse del asociados, mientras que Las consultas se basan
● Control de versiones
servidor el REST lo hará a partir ● Ecosistema en
en campos y sus datos
de peticiones a varias crecimiento
asociados a tipos. Si hay
URL. una falta de coincidencia
de tipos en una consulta
GraphQL, las aplicaciones
del servidor devuelven un
mensaje de error.
5
Desventajas GRAPHQL
Complejidad de
Limitación de Tasa Cache
Consultas

GraphQL no elimina los Mientras que en REST se En REST, se accede a los


cuellos de botella de permiten una determinada recursos con URL. Almacenar
rendimiento cuando cantidad de solicitudes por en cache es mantener la URL.
tiene que acceder a día, para Graphql esto es ● En GraphQL puede ser más
varios campos en una más difícil. complejo porque aunque se
consulta. ● Por lo general lo que se haga la consulta sobre las
hace es reducir las mismas entidades la
profundidades de la consulta puede ser
consulta o su diferente.
complejidad.
6
- La tecnología REST es la más utilizada y ampliamente aceptada.

- Las respuestas de una API GraphQL son considerablemente más


reducidas que las generadas con una API REST.

Comparativa - Bajo estrés una API REST presenta mayor velocidad de respuesta.

REST / - REST impone que debe utilizarse el caché mientras que GraphQL
como tecnología no ofrece de forma natural este middleware. Por
esto una API REST tendrá constantemente una velocidad mayor al

GRAPHQL
momento de responder peticiones comunes..

- GraphQL es mucho más ventajoso en las áreas de underfetching y


overfetching.

- En general, desde el punto de vista de rendimiento, GraphQL debería


utilizarse cuando se requiere menor utilización de la memoria, cuando
los recursos que la API maneja están estrechamente relacionados
entre sí y cuando no se considere que vaya a utilizarse la data
completa de los recursos .

REST debería utilizarse en caso de necesitarse mayor velocidad de


respuesta, cuando los recursos no están relacionados entre sí de una
forma tan estrecha y cuando se vaya a utilizar toda la data de cada
uno de los recursos manejados. 7
Principios de Diseño
● Jerárquico: una consulta GraphQL en sí está estructurada jerárquicamente.
La consulta tiene la misma forma que los datos que devuelve.
● Centrado en el Producto: se rige por los requisitos de las vistas y los
ingenieros de front-end que las escriben.
● Tipado Fuerte: cada servidor GraphQL define un sistema de tipos específico
de la aplicación. Las consultas se ejecutan dentro del contexto de ese
sistema de tipos.
● Consultas especificadas por el Cliente: GraphQL publica las capacidades que
sus clientes pueden consumir. Es el cliente especifica exactamente cómo
consumirá esas capacidades publicadas.
● Introspectivo: El propio lenguaje GraphQL debe poder consultar el sistema de
tipos de un servidor GraphQL. 8
type Query{ type Sucursal{
empresa(id: Int!): Empresa nro_sucursal:Int!,
empresas: [Empresa] direccion:String!,
} telefono:String!,
type Empresa{ localidad:String!,
id: Int, horario_atencion:String
nombre: String, }

¿Cómo
url: String, type BalanceComercial {
razonSocial:String!, bc_2020:Int,
rubro: Rubro!, bc_2019:Int,
ap_y_nom_apoderado:String, bc_2018:Int!

Funciona? dni_apoderado:Int,
domicilio_legal:String!,
telefono_dl:String,
}
type Rubro{
id: Int,
email_dl:String, nombre:String
¿Cómo sería el flujo de email_comercial:String, }

ejecución de una petición tel_comercial:String,


empleados:Int,
type Mutation{
SucursalAdd(
GRAPHQL? cuit:Int, idEmpresa: Int,
sucursales:[Sucursal], nro_sucursal:Int!,
balance_comercial:BalanceComer direccion:String!,
cial!, telefono:String!,
} localidad:String!,
horario_atencion:String
):Sucursal 9
}
● Documento
● Operaciones
○ Query
○ Mutation
○ Suscription
● Conjuntos de selección, campos, alias,
fragmentos
● Types:
○ SCALAR: INT, FLOAT, BOOLEAN, STRING,
ID.
LENGUAJE ○ OBJECT:Es el que permite definir
entidades, es uno de los más importantes
para Graphql
Describe nuestros datos y las ○ ENUMS: donde se permite elegir entre una
de varias opciones.
consultas que podemos hacer al ○ INTERFACES
servicio. ○ UNIONS: Permite definir diferentes posibles
tipos (o interfaces) que se esperan como
resultado.
● Modificadores de tipo: !, []

10
Especificación Graphql
type Query{ type Sucursal{
empresa(id: Int!): Empresa nro_sucursal:Int!,
empresas: [Empresa] direccion:String!,
} telefono:String!,
type Empresa{ localidad:String!,
id: Int, horario_atencion:String
nombre: String, }
url: String, type BalanceComercial {
razonSocial:String!, bc_2020:Int,
rubro: Rubro!, bc_2019:Int,
ap_y_nom_apoderado:String, bc_2018:Int!

Ejemplo dni_apoderado:Int,
domicilio_legal:String!,
telefono_dl:String,
}
type Rubro{
id: Int,
email_dl:String, nombre:String
Schema: Describe nuestros email_comercial:String, }

datos y las consultas que tel_comercial:String,


empleados:Int,
type Mutation{
SucursalAdd(
podemos hacer al servicio. cuit:Int, idEmpresa: Int,
sucursales:[Sucursal], nro_sucursal:Int!,
balance_comercial:BalanceComer direccion:String!,

express-graphql cial!,
}
telefono:String!,
localidad:String!,
horario_atencion:String
):Sucursal 11
}
query{
continents {

Ejemplo para el }
}
name

Trabajo ----------------
query($continentCode: ID!){
continents {

Integrador }
name
code

continent(code: $continentCode) {
Realizar consultas sobre la api code
de países name
}
}
#vars
{
"continentCode": "AF"
}
12
Conclusiones
● Definición: GraphQL es un lenguaje de consulta de datos, pero también un
entorno de ejecución, porque permite llevar a cabo las consultas. Podemos
consultar “qué queremos” y “cómo lo queremos”.
● Ventajas: Único Endpoint / Fuertemente Tipado / (Over/Under)fetching
● Desventajas: No elimina cuellos de botella / Caching
● Comparación con REST: GraphQL debería utilizarse cuando se requiere
menor utilización de la memoria; cuando los recursos que la API maneja
están estrechamente relacionados entre sí y cuando no se considere que
vaya a utilizarse la data completa de los recursos.
● Trabajo Integrador: Aprendimos a realizar consultas sobre la api propuesta
en el enunciado de manera tal de implementarlas en el Trabajo Integrador
13

También podría gustarte