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

Introducción a GraphQL | BeerJS Junio

Dilip
July 05, 2017

Introducción a GraphQL | BeerJS Junio

Slides de charla sobre una breve introducción a GraphQL y algunas mejores prácticas, expuesta en la edición de Junio 2017 de BeerJS (www.beerjs.cl) por Dilip Ramírez.

Dilip

July 05, 2017
Tweet

Other Decks in Technology

Transcript

  1. Versioning Custom Endpoints (múltiples para cada plataforma) Hand-coding parsing code

    Include v/s Endpoint Sin soporte para nesting Overfetching / Underfetching /cervezas?include=empresa,cerveza.nombre,cerveza.gradoalcohol, ...
  2. 1

  3. type Equipo { name: String! description: String players: [Jugador] }

    type Jugador { id: Int! name: String! position: Int! bio: String! equipo: Equipo! goals: Int! } type Query { plantelEquipo: [Jugador] jugador(id: Int!): Jugador } type Mutation{ agregarGolAJugador( id: Int! ): Jugador } Define el Schema
  4. const resolverMap = { Query: { plantelEquipo(obj, args, context, info)

    { return Equipo.findOne().then().players; }, jugador(obj, { id }, context, info) { return Jugador.findByID(id); }, }, Jugador: { equipo(jugador) { return Equipo.findByPlayerID(jugador.id); }, Mutation: { agregarGolAJugador(obj, { id }, context, info) { return Jugador.update({ id: id }, { $set: { goals: goals++ } }); } } }; Y los Resolvers
  5. { randomJugador { name } } { “randomJugador”: { “name”:

    “Claudio Bravo” } } Luego pide sólo lo que necesitas
  6. { jugador(id:12398) { name } } { “jugador”: [ {

    “name” :“Marcelo Diaz” } ] } Programáticamente
  7. Modifica tus recursos mutation{ agregarGolAJugador(id:5523) { name, goals } }

    { “agregarGolAJugador”: { “name” :“Alexis Sanchez”, “goals”: 38 } }
  8. Autorización y Autenticación Tomar en cuenta al migrar a GraphQL

    Queries malignas (DDoS, etc.) Caching Casos de uso
  9. Planifica el Schema con anticipación (a.k.a ocupa el mayor tiempo

    posible diseñando el schema de tu producto antes de empezar a hacer cualquier otra cosa)
  10. Autenticación Edge-based? Node-based? Si ya estás usando un método específico

    en producción quédate con ese por el momento No es necesario reinventar la rueda, por ahora.
  11. Recursos Persisted GraphQL Queries with Apollo Client Apollo Developers Apollo

    Dev Blog How Facebook Organizes their GraphQL code Apollo GraphQL Github GraphQL Awesome https://dev-blog.apollodata.com/persisted-graphql-queries-with- apollo-client-119fd7e6bba5 http://dev.apollodata.com https://dev-blog.apollodata.com/ https://dev-blog.apollodata.com/graphql-at-facebook-by-dan- schafer-38d65ef075af https://github.com/apollographql https://github.com/chentsulin/awesome-graphql