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

GraphQL Without Hype

GraphQL Without Hype

Łukasz Szymański

April 03, 2017
Tweet

More Decks by Łukasz Szymański

Other Decks in Programming

Transcript

  1. GraphQL
    WITHOUT HYPE
    szymanskilukasz

    View Slide

  2. szymanskilukasz
    REST

    View Slide

  3. szymanskilukasz

    View Slide

  4. szymanskilukasz

    View Slide

  5. szymanskilukasz

    View Slide

  6. szymanskilukasz

    View Slide

  7. szymanskilukasz
    Multiple round trips
    between the client
    and server
    to render single views

    View Slide

  8. szymanskilukasz

    View Slide

  9. szymanskilukasz

    View Slide

  10. szymanskilukasz

    View Slide

  11. szymanskilukasz
    Ad Hoc Endpoints

    View Slide

  12. szymanskilukasz

    View Slide

  13. szymanskilukasz

    View Slide

  14. szymanskilukasz

    View Slide

  15. szymanskilukasz
    Maintaining Versions

    View Slide

  16. szymanskilukasz
    Weakly Typed

    View Slide

  17. szymanskilukasz
    Over Fetching Data

    View Slide

  18. szymanskilukasz
    Documentation ?

    View Slide

  19. szymanskilukasz
    What is GraphQL?

    View Slide

  20. szymanskilukasz
    GraphQL is a query language for APIs
    and a runtime for fulfilling those queries
    with your existing data

    View Slide

  21. szymanskilukasz
    No round trips

    View Slide

  22. szymanskilukasz
    For clients

    View Slide

  23. szymanskilukasz
    Backend ?

    View Slide

  24. szymanskilukasz
    It can be anything

    View Slide

  25. szymanskilukasz
    It can be anything

    View Slide

  26. szymanskilukasz
    How ?
    'resolve' => function ($rootValue, $args, $context) {
    // return something from your existing backend;
    }

    View Slide

  27. szymanskilukasz
    Thanks to resolve()
    we can put GraphQL anywhere

    View Slide

  28. szymanskilukasz
    API for mobile apps

    View Slide

  29. szymanskilukasz
    Internal API

    View Slide

  30. szymanskilukasz
    API for services

    View Slide

  31. szymanskilukasz
    No Versioning
    https://github.com/facebook/graphql/issues/175

    View Slide

  32. szymanskilukasz
    Facebook's GraphQL schema

    View Slide

  33. szymanskilukasz
    Facebook's GraphQL schema
    - over 4 years old

    View Slide

  34. szymanskilukasz
    Facebook's GraphQL schema
    - over 4 years old
    - 1,000s of types at this point

    View Slide

  35. szymanskilukasz
    Facebook's GraphQL schema
    - over 4 years old
    - 1,000s of types at this point,
    - under active change by 100s of engineers

    View Slide

  36. szymanskilukasz
    Facebook's GraphQL schema
    - over 4 years old
    - 1,000s of types at this point,
    - under active change by 100s of engineers
    - has never needed a versioned breaking change

    View Slide

  37. szymanskilukasz
    Facebook's GraphQL schema
    - over 4 years old
    - 1,000s of types at this point,
    - under active change by 100s of engineers
    - has never needed a versioned breaking change
    - and still supports 4-year old shipped versions of iOS and
    Android apps (which unfortunately are still being used)

    View Slide

  38. szymanskilukasz
    Strongly Typed / Documentation

    View Slide

  39. szymanskilukasz
    Confession

    View Slide

  40. szymanskilukasz
    Be prepared

    View Slide

  41. szymanskilukasz
    Denial of Service

    View Slide

  42. szymanskilukasz

    View Slide

  43. szymanskilukasz

    View Slide

  44. szymanskilukasz
    Authentication
    Authorization

    View Slide

  45. szymanskilukasz
    N+1 queries

    View Slide

  46. szymanskilukasz
    Monitoring / Debugging
    Tools

    View Slide

  47. szymanskilukasz
    How to
    get started

    View Slide

  48. szymanskilukasz
    Internal API for services

    View Slide

  49. szymanskilukasz
    Demo: echo(message: “”)

    View Slide

  50. Demo: echo(message: “”)

    View Slide

  51. szymanskilukasz
    Demo: get User Credits

    View Slide

  52. szymanskilukasz
    Demo: get User Credits

    View Slide

  53. szymanskilukasz
    Demo: Deprecated Fields

    View Slide

  54. szymanskilukasz
    Demo: Deprecated Fields

    View Slide

  55. szymanskilukasz
    Demo: Mutations

    View Slide

  56. szymanskilukasz
    Demo: Mutations

    View Slide

  57. szymanskilukasz
    Public API

    View Slide

  58. szymanskilukasz
    Demo: User Authorization

    View Slide

  59. szymanskilukasz
    Demo: User Authorization

    View Slide

  60. szymanskilukasz
    Demo: Performance

    View Slide

  61. szymanskilukasz
    Demo: Performance

    View Slide

  62. szymanskilukasz
    I just want to have fun

    View Slide

  63. http://graphql.org/swapi-graphql/
    szymanskilukasz

    View Slide

  64. https://developer.github.com/early-access/graphql/explorer/
    szymanskilukasz

    View Slide

  65. https://github.com/chentsulin/awesome-graphql
    szymanskilukasz

    View Slide

  66. Łukasz Szymański
    Development Team Lead at
    @szymanskilukasz
    https://www.linkedin.com/in/szymanskilukasz
    https://twitter.com/szymanskilukasz
    https://speakerdeck.com/szymanskilukasz
    szymanskilukasz

    View Slide