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

GraphQL by a Skeptic

GraphQL by a Skeptic

There is much hype around GraphQL around these days - like there seems to be for so many other tools lately.

Popularity isn't a guarantee of quality, but that doesn't mean a popular thing can't be good either. In this talk I present the basics ideas behind GraphQL, how those ideas are implemented, and what those decisions mean in a production environment, exploring both their benefits and shortcomings.

Avatar for Pablo Astigarraga

Pablo Astigarraga

November 26, 2017
Tweet

More Decks by Pablo Astigarraga

Other Decks in Technology

Transcript

  1. API

  2. /

  3. SQL

  4. { "data": { "human": { "name": "Luke", "friends": [ {"name":

    "Han” }, {"name": "Leia"}, {"name": "Obi-wan”} ] } } }
  5. { "data": { "human": { "name": "Luke", "friends": [ {"name":

    "Han” }, {"name": "Leia"}, {"name": "Obi-wan”} ] } } }
  6. human(obj, args, context) { let data = // SELECT *

    FROM // humans WHERE // id = args.id return new Human(data) }
  7. human(obj, args, context) { let data = // SELECT *

    FROM // humans WHERE // id = args.id return new Human(data) }
  8. human(obj, args, context) { let data = // SELECT *

    FROM // humans WHERE // id = args.id return new Human(data) }
  9. human(obj, args, context) { let data = // SELECT *

    FROM // humans WHERE // id = args.id return new Human(data) }
  10. { "errors": [ { "message": "Variable \"$id\" of required type

    \"ID!\" was not provided.", "locations": [ { "line": 1, "column": 17 } ] } ] }
  11. { "errors": [ { "message": "Variable \"$id\" of required type

    \"ID!\" was not provided.", "locations": [ { "line": 1, "column": 17 } ] } ] }
  12. { "errors": [ { "message": "Variable \"$id\" of required type

    \"ID!\" was not provided.", "locations": [ { "line": 1, "column": 17 } ] } ] }
  13. { "errors": [ { "message": "Variable \"$id\" of required type

    \"ID!\" was not provided.", "locations": [ { "line": 1, "column": 17 } ] } ] }