Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GraphQL vs REST: El futuro de la web

GraphQL vs REST: El futuro de la web

En esta oportunidad estaremos hablando de una popular tecnología creada por Facebook para el desarrollo de APIs modernas: GraphQL. Revisaremos las principales características, ventajas y desventajas de usar este enfoque orientado a grafos en comparación con la arquitectura más usada hoy en día para la implementación de APIs: REST.

Para evidenciar dichas características, estaremos desarrollando una aplicación demo donde se podrán comparar ambos enfoques de manera práctica.

Quito Lambda

July 31, 2019
Tweet

More Decks by Quito Lambda

Other Decks in Programming

Transcript

  1. Agenda • Arquitectura REST • Qué es GraphQL? • Principales

    Características • GraphQL vs REST • Batching • Alternativas de GraphQL • Demo
  2. “GraphQL is a query language for APIs and a runtime

    for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.” Qué es GraphQL? Citado de graphql.org
  3. { me { firstname } } GraphQL Query Schema Definition

    Language (SDL) Resolvers export const schema = gql` type Query { me: User } type User { id: ID!, username: String!, firstname: String!, lastname: String!, name: String!, friends: [User!] } `; export const resolvers = { Query: { me: () => { return { firstname: 'Roberto', }; }, }, User: { username: user => user.lastname, }, },
  4. GraphQL vs REST Control de los datos en el servidor

    Control de los datos en el cliente GET /api/v1/user/1234 { "@id": "/user/1234", "username": "roberto.rielo.v", "email": "[email protected]", "firstname": "Roberto", "lastname": "Rielo", "lastLogin": "2019-07-31T00:00:00", "company": "Stack Builders", } { firstname lastname company } { "firstname": "Roberto", "lastname": "Rielo", "company": "Stack Builders" } GraphQL Query JSON Response GET /api/v1/user/1234?cols[]=username&cols[]=email { "username": "roberto.rielo.v", "email": "[email protected]", }
  5. GraphQL vs REST Under-fetching No existe Under-fetching { "@id": "/user/1234",

    "username": "roberto.rielo.v", "email": "[email protected]", "bestFriend": { "@id": "/user/56" }, } { firstname lastname bestFriend { name } } { "firstname": "Roberto", "lastname": "Rielo", "bestFriend": { "name": "Carlos" } } GraphQL Query JSON Response GET /api/v1/user/1234 GET /api/v1/user/1234 GET /api/v1/user/56 { "@id": "/user/1234", "username": "roberto.rielo.v", "email": "[email protected]", "bestFriend": { "@id": "/user/56" "name": "Carlos Javier" "username": "carlos.javier" }, }
  6. ¡Presenta tus ideas en Quito Lambda! Si tienes algo interesante

    que presentar, ¡ven a presentar con nosotros! Programación Funcional, DevOps, Cloud Computing, IaaS, Desarrollo Web, React, WebGL, ReasonML y cualquier cosa interesante [email protected]