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.

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 } ] } ] }