A walk in GraphQL
Preface
A lot of information has been written about GraphQL
since it was unleashed to the world by Facebook in 2015. As the curious nerds we are, we tend to embrace the self-taught approach first, which implies research, reading documents and tutorials, and more documents and tutorials, and trying/error in a continuous loop, until we feel confident with the topic.
The intention of this road map is to share with you our own learning experience (one of many paths you can take to grok the language) and to draw you to the highest quality information (which we won’t be ever able to write in a better way) in the attempt to prevent you from coming across misleading (when not completely wrong) documents outside in the wild; and keeping you on the implementation agnostic spirit of the language, providing abstract examples as well as practical exercises in different languages so you can understand the correlations and differences without losing focus on the main topic: GraphQL
.
We’ll walk through this starting from the language and the API definition on the backend, gradually increasing the complexity as the walk develop; it might contain new examples on the future, or more “days” including client-side, testing or architecture specific topic, or we might create another walk for them, we don’t really know.
Hopefully your walk will be much easier than ours!
Collaborators
- Ezequiel Alvarez - @ealvarezk
- Execution coordinator and reviewer
- Ezequiel Tejerina - @quequitejerina
- Python exercise contributor and reviewer
- Franco Gribaudo - @fgriba
- Java exercise contributor and reviewer
- Cristian Buffa - @cristianbuffa & José Ignacio Aguilera - @jiaguilera
- NetCore exercise contributors and reviewers
- Javier Valderrama - @Jaxolotl
- Course writer, JavaScript exercise contributor and reviewer
Special thanks to our external reviewers!
- Eloy Colella - @ehx
- Python reviewer
- Ciro Grbavac- @ciro599
- Java reviewer
- Lucas Mari - @lucasmari76
- Java reviewer
- Alejandro Freiberg - @alejandrofreiberg
- NetCore reviewer
Table of contents
- Intro
- What’s a graph?
- What’s GraphQL and what’s the
graph
part all about - GraphQL vs RESTful
- Schema Basics
- SDL - Schema Definition Language
- Named Types
- Input and Output Types
- Lists and Non-nullable
- Root operation Types
- Query
- Mutation
- Subscription
- Resolvers
- Learning resources
- Setup
- Day 1
- Queries and Resolvers
- Query
- Resolver
- Exercise
- Learning resources
- Queries and Resolvers
- Day 2
- Arguments and Variables
- Argument
- Variable
- Exercise
- Learning resources
- Arguments and Variables
- Day 3
- Input Objects and Enums
- Input Object
- Enum
- Exercise
- Learning resources
- Input Objects and Enums
- Day 4
- Mutations
- Mutation
- Description
- Learning resources
- Exercise
- Mutations
- Day 5
- Interfaces and Unions
- Interface
- Union
- Exercise
- Learning resources
- Interfaces and Unions
- Day 6
- Extending SDL definitions
- Extend
- Scaling our Schema
- Principled GraphQL
- Schema Stitching
- Federation
- Exercise
- Learning resources
- Extending SDL definitions
- Day 7
- Errors
- Description
- Exercise
- Learning resources
- Errors