Preámbulo ● Crecimiento (desde el 2015) ● Empezó a trabajarse en 2012 en Facebook ● Existe un borrador de la especificación ● Se ha implementado en clientes en más de 10 lenguajes distintos
El nuevo chavo de la cuadra GraphQL es una manera completamente nueva de implementar y consumir Web APIs. Y, si se hace bien, se puede construir integraciones maravillosamente acopladas que no son posibles con REST.
El nuevo chavo de la cuadra GraphQL es una manera completamente nueva de implementar y consumir Web APIs. Y, si se hace bien, se puede construir integraciones maravillosamente acopladas que no son posibles con REST. http://graphql.org/
GraphQL: Origins ● 2012: Facebook quiere re-construir sus apps móviles nativas ● Existen diferencias entre cómo se guarda el contenido y cómo se desea mostrar (news feed?)
GraphQL: Origins ● 2012: Facebook quiere re-construir sus apps móviles nativas ● Existen diferencias entre cómo se guarda el contenido y cómo se desea mostrar (news feed?) ● ¿Grafos? Así no se almacena ¯\_(ツ)_/¯
GraphQL: Origins ● 2012: Facebook quiere re-construir sus apps móviles nativas ● Existen diferencias entre cómo se guarda el contenido y cómo se desea mostrar (news feed?) ● ¿Grafos? Así no se almacena ¯\_(ツ)_/¯ ● ¿Grafos con REST?
GraphQL: Origins ● 2012: Facebook quiere re-construir sus apps móviles nativas ● Existen diferencias entre cómo se guarda el contenido y cómo se desea mostrar (news feed?) ● ¿Grafos? Así no se almacena ¯\_(ツ)_/¯ ● ¿Grafos con REST? ● ¿En móviles?
GraphQL: Origins ● 2012: Facebook quiere re-construir sus apps móviles nativas ● Existen diferencias entre cómo se guarda el contenido y cómo se desea mostrar (news feed?) ● ¿Grafos? Así no se almacena ¯\_(ツ)_/¯ ● ¿Grafos con REST? ● ¿En móviles? Solución: obtener la data desde la perspectiva de los diseñadores de producto y desarrolladores
Principios del diseño ● Es de naturaleza jerárquico, eso quiere decir que podemos seguir las relaciones entre objetos de manera natural. Y esto se acerca a como comúnmente pensamos en nuestras interfaces.
Principios del diseño ● Es de naturaleza jerárquico, eso quiere decir que podemos seguir las relaciones entre objetos de manera natural. Y esto se acerca a como comúnmente pensamos en nuestras interfaces. ● Es fuertemente tipado, cada nivel en un query corresponde a un tipo, y cada tipo define un set de campos (propiedades). Esto permite dar errores más descriptivos antes de ejecutar un query.
Principios del diseño ● Es de naturaleza jerárquico, eso quiere decir que podemos seguir las relaciones entre objetos de manera natural. Y esto se acerca a como comúnmente pensamos en nuestras interfaces. ● Es fuertemente tipado, cada nivel en un query corresponde a un tipo, y cada tipo define un set de campos (propiedades). Esto permite dar errores más descriptivos antes de ejecutar un query. ● Es libre de versionamiento dado que los clientes hacen en el query exactamente la data que necesitan, se pueden añadir campos sin preocupación de romper algo o hacer las respuestas más pesadas.
Conceptos ● Los tipos, y los campos (propiedades) en dichos tipos ● Los tipos escalares que incluye son: ○ Int ○ Float ○ String ○ Boolean ○ ID ● Se pueden definir escalares personalizados
Pros ● Menos “overhead” de red ● Esquema fuertemente tipado ● Encaja muy bien con data “tipo grafo” ● No obliga a tener un motor de almacenamiento en específico
Pros ● Menos “overhead” de red ● Esquema fuertemente tipado ● Encaja muy bien con data “tipo grafo” ● No obliga a tener un motor de almacenamiento en específico ● Se obtiene lo que se pide
Pros ● Menos “overhead” de red ● Esquema fuertemente tipado ● Encaja muy bien con data “tipo grafo” ● No obliga a tener un motor de almacenamiento en específico ● Se obtiene lo que se pide ● Introspección
Pros ● Menos “overhead” de red ● Esquema fuertemente tipado ● Encaja muy bien con data “tipo grafo” ● No obliga a tener un motor de almacenamiento en específico ● Se obtiene lo que se pide ● Introspección ● No hay versionamiento