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

The rise of GraphQL

The rise of GraphQL

Since its introduction in 2015, GraphQL has become a very popular API. Often times replacing existing REST APIs as well. In this talk we’ll look at:

What GraphQL is
Why you should (not) use GraphQL
Some best practices for implementing a GraphQL spec
Potential downsides

Jelmer Snoeck

January 28, 2020
Tweet

More Decks by Jelmer Snoeck

Other Decks in Technology

Transcript

  1. The rise of GraphQL

    View Slide

  2. FIND ME
    github.com/jelmersnoeck
    twitter.com/jelmersnoeck
    Jelmer Snoeck
    ABOUT ME
    - Tech Lead at manifold.co
    - Gopher
    - Performance, reliability
    and scalability

    View Slide

  3. What is GraphQL?

    View Slide

  4. Quick history lesson
    - Created by Facebook in 2012
    - Open Sourced in 2015
    - GraphQL Foundation in 2018

    View Slide

  5. 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.
    - graphql.org

    View Slide

  6. View Slide

  7. Descriptive

    View Slide

  8. Models

    View Slide

  9. Queries

    View Slide

  10. Query Language

    View Slide

  11. View Slide

  12. evelinag.com

    View Slide

  13. graphql.org/swapi-graphql

    View Slide

  14. View Slide

  15. View Slide

  16. Runtime

    View Slide

  17. “a runtime for fulfilling those queries”

    View Slide

  18. Resolvers

    View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. Why (not) use GraphQL?

    View Slide

  23. Query Language + Runtime

    View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. Ask for what you need

    View Slide

  28. View Slide

  29. View Slide

  30. /v1/people/cGVvcGxlOjE=?field_mask=name,gender

    View Slide

  31. View Slide

  32. Versioning and deprecation

    View Slide

  33. View Slide

  34. View Slide

  35. Error Handling

    View Slide

  36. View Slide

  37. Performance

    View Slide

  38. View Slide

  39. Performance
    - Use dataloaders
    - Use GET requests (where possible)
    - Set complexity limits

    View Slide

  40. Best Practices

    View Slide

  41. Pagination

    View Slide

  42. Pagination
    - cursor based
    - pageInfo
    - pagination by default

    View Slide

  43. View Slide

  44. View Slide

  45. View Slide

  46. Global Object Identification

    View Slide

  47. View Slide

  48. View Slide

  49. Input/output objects for mutations

    View Slide

  50. View Slide

  51. Thanks! @jelmersnoeck
    manifold.co

    View Slide