Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Novvum/36-graphql-concepts
π 36 concepts every GraphQL developer should know.
https://github.com/Novvum/36-graphql-concepts
List: 36-graphql-concepts
awesome-list concepts graphql graphql-api graphql-client graphql-schema graphql-server graphql-subscriptions graphql-tools
Last synced: 3 months ago
JSON representation
π 36 concepts every GraphQL developer should know.
- Host: GitHub
- URL: https://github.com/Novvum/36-graphql-concepts
- Owner: Novvum
- Created: 2019-02-28T19:49:48.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T18:39:51.000Z (almost 2 years ago)
- Last Synced: 2024-05-23T07:12:14.345Z (6 months ago)
- Topics: awesome-list, concepts, graphql, graphql-api, graphql-client, graphql-schema, graphql-server, graphql-subscriptions, graphql-tools
- Language: CSS
- Homepage: https://36-concepts-graphql.netlify.com/
- Size: 2.75 MB
- Stars: 248
- Watchers: 14
- Forks: 26
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-list - 36-graphql-concepts
- ultimate-awesome - 36-graphql-concepts - π 36 concepts every GraphQL developer should know. (Other Lists / PowerShell Lists)
README
36 Concepts Every GraphQL Developer Should Know
## Introduction
This repository was created with the intention of helping developers master their concepts in GraphQL. It is not a requirement, but a guide for future studies.
Credit to [@leonardomso's](https://github.com/leonardomso) [33 JS Concepts Project](https://github.com/leonardomso/33-js-concepts) for the inspiration.
Thanks to [@kelseyyim](https://github.com/kelseyyim) for getting this started!
## Community
Feel free to submit a PR adding a link to your own recaps or reviews. If you want to translate the repo into your native language, please feel free to do so.
All the translations for this repo will be listed below:
---
## Table of Contents
### Specs
1. **[Queries](#1-queries)**
2. **[Mutations](#2-mutations)**
3. **[Subscriptions](#3-subscriptions)**
4. **[Types](#4-types)**
5. **[Fields](#5-fields)**
6. **[Root Field](#6-root-field)**
7. **[Relationships](#7-relationships)**
8. **[Introspection](#8-introspection)**
9. **[Arguments](#9-arguments)**
10. **[Union Types](#10-union-types)**
11. **[Interface Types](#11-interface-types)**
12. **[Directives](#12-directives)**
13. **[Type Extensions](#13-type-extension)**
14. **[Relay Specification](#14-relay-specification)**
15. **[Schema Definition Language](#15-schema-definition-language---sdl)**
16. **[GraphQLSchema Object](#16-graphqlschema-object)**### Server
17. **[Setting up a server](#17-setting-up-a-server)**
18. **[Schema](#18-schema)**
19. **[Resolvers](#19-resolvers)**
20. **[Context](#20-context)**
21. **[Info Object](#21-info-object)**
22. **[Databases](#22-databases)**
23. **[Dataloader](#23-dataloader)**
24. **[Entry Points](#24-entry-points)**
25. **[Schema Stitching](#25-schema-stitching)**
26. **[SDL First](#26-sdl-first)**
27. **[Code First](#27-code-first)**
28. **[Middleware](#28-middleware)**### Client
29. **[Fetching](#29-fetching)**
30. **[Fragments](#30-fragments)**
31. **[Variables](#31-variables)**
32. **[Alias](#32-alias)**
33. **[Polling](#33-polling)**
34. **[Cache](#34-cache)**### Best Practices
35. **[Schema Design](#35-schema-design)**
36. **[Pagination](#36-pagination)**
37. **[Logging](#37-logging)**---
# Specs## 1. Queries
### Articles
* π [Queries and Mutations - Graphql.org](https://graphql.org/learn/queries/)
* π [The Anatomy of a Graphql Query β Sashko Stubailo](https://blog.apollographql.com/the-anatomy-of-a-graphql-query-6dffa9e9e747)
* π [Front End Queries Made Easy - Rasheed Bustamam](https://medium.freecodecamp.org/graphql-front-end-queries-made-easy-68e9d9ded283)
* π [An Introduction to Graphql Queries - Alligator.io](https://alligator.io/graphql/introduction-graphql-queries/)
* π [Examples for GraphQL-Queries and Mutations - predict8](https://www.predic8.de/graphql-query-samples.htm)
### Videos* π₯ [GraphQL Tutorial #4 - Making Queries - The Net Ninja](https://www.youtube.com/watch?v=bX2e4FILf78)
* π₯ [Writing GraphQL Queries - Live Coding with Jesse](https://www.youtube.com/watch?v=k-pj9d0cC-0)
**[β¬ Back to Top](#table-of-contents)**## 2. Mutations
### Articles
* π [Mutations in GraphQL - Alexander Kondov](https://hackernoon.com/mutations-in-graphql-9ac6a28202a2)
* π [Mutations - GraphQL.org](https://graphql.org/learn/queries/#mutations)
* π [Organizing GraphQL Mutations - Jeff Lowery](https://medium.freecodecamp.org/organizing-graphql-mutations-653306699f3d)
* π [GraphQL mutations: Partial updates implementation - Arnaud BezanΓ§on](https://medium.com/workflowgen/graphql-mutations-partial-updates-implementation-bff586bda989)
* π [Modeling GraphQL Mutations - Oleg Ilyenko](https://techblog.commercetools.com/modeling-graphql-mutations-52d4369f73b1)
* π [GraphQL Mutation Design: Anemic Mutations - Marc-AndrΓ© Giroux](https://medium.com/@__xuorig__/graphql-mutation-design-anemic-mutations-dd107ba70496)
* π [Understanding GraphQL Mutations - Moon Highway](https://moonhighway.com/understanding-graphql-mutations?utm_source=dormosheio&utm_campaign=dormosheio)
### Videos* π₯ [GraphQL Tutorial #18 - Mutations - The Net Ninja](https://www.youtube.com/watch?v=DU77lbBPfBI)
* π₯ [GraphQL Tutorial #19 - More on Mutations - The Net Ninja](https://www.youtube.com/watch?v=H8oRezNak2s)
* π₯ [Learn Apollo - Basic Mutations - Prisma](https://www.youtube.com/watch?v=ZXvBmA-hKwc)
**[β¬ Back to Top](#table-of-contents)**## 3. Subscriptions
### Articles
* π [Subscriptions in Graphql and Relay - Dan Schafer](https://graphql.org/blog/subscriptions-in-graphql-and-relay/)
* π [From Zero to Graphql Subscriptions - Robert Zhu](https://hackernoon.com/from-zero-to-graphql-subscriptions-416b9e0284f3)
* π [Make web real-time with GraphQL subscriptions - David Qorashi](https://medium.com/@hpux/make-web-real-time-with-graphql-subscriptions-5a59ac1b010c)
* π [Realtime GraphQL Subscriptions - How to Graphql](https://www.howtographql.com/graphql-js/7-subscriptions/)
* π [A Guide to Subscriptions in GraphQL with Apollo -Brenda Jimenez](https://www.levvel.io/our-ideas/A-Guide-to-Subscriptions-in-GraphQL-with-Apollo)### Videos
* π₯ [What is a Graphql Subscription - Ben Awad](https://www.youtube.com/watch?v=Tp8UPgmhyTs)
* π₯ [Introducing GraphQL Subscriptions - Lee Byron](https://www.youtube.com/watch?v=bn8qsi8jVew)
* π₯ [How to build a Realtime Chat with GraphQL Subscriptions and Apollo - Prisma](https://www.youtube.com/watch?v=aSLF9f13o2c)
* π₯ [How to setup GraphQL Subscriptions Nodejs - Ben Awad](https://www.youtube.com/watch?v=XmNmiBfk6M4)
* π₯ [How to add Authentication to your GraphQL Subscriptions - Ben Awad](https://www.youtube.com/watch?v=EuaVr7vFF5E)
**[β¬ Back to Top](#table-of-contents)**## 4. Types
### Articles
* π [Constructing Types β Graphql.org](https://graphql.org/graphql-js/constructing-types/)
* π [Schema types - Apollo](https://www.apollographql.com/docs/apollo-server/schemas/types.html)
* π [Object Types β Graphql.org](https://graphql.org/graphql-js/object-types/)
### Videos
* π₯ [Author Types β The Net Ninja](https://www.youtube.com/watch?v=Pe1MgqWFyYE&t=2s)
* π₯ [Extending Schema Types - Full-stack GraphQL with Apollo, Meteor & React - LevelUpTuts](https://www.youtube.com/watch?v=A7NvopS75dI)**[β¬ Back to Top](#table-of-contents)**
## 5. Fields
### Articles
* π [Fields β Graphql.org](https://graphql.org/learn/queries/#fields)
* π [Object Types & Fields β Graphql.org](https://graphql.org/learn/schema/#object-types-and-fields)**[β¬ Back to Top](#table-of-contents)**
## 6. Root Field
### Articles
* π [Root Fields & Resolvers - Graphql.org](https://graphql.org/learn/execution/)
### Videos
* π₯ [GraphQL Tutorial, Root Query β The Net Ninja](https://www.youtube.com/watch?v=ALqNbTik44o)
**[β¬ Back to Top](#table-of-contents)**
## 7. Relationships
### Articles
* π [Thinking in graphs - Graphql.Org](https://graphql.org/learn/thinking-in-graphs/)
* π [ A simple graphql example with relationships - Graphql Documentation](https://blog.tylerbuchea.com/a-simple-graphql-example-with-relationships/)### Videos
* π₯ [Type Relations - The Net Ninja](https://www.youtube.com/watch?v=-aQ_Io9m1GQ)
**[β¬ Back to Top](#table-of-contents)**
## 8. Introspection
### Articles
* π [GraphQL introspection and introspection queries - David MrΓ‘z](https://graphqlmastery.com/blog/graphql-introspection-and-introspection-queries)
**[β¬ Back to Top](#table-of-contents)**
## 9. Arguments
### Articles
* π [Fields and arguments - flaviocopes](https://flaviocopes.com/graphql/#fields-and-arguments)
* π [Passing Arguments - GraphQL.org](https://graphql.org/graphql-js/passing-arguments/)### Videos
* π₯ [Arguments - Novvum](https://twitter.com/novvumio/status/1113884737981100033)
**[β¬ Back to Top](#table-of-contents)**
## 10. Union Types
### Articles
* π [How to write add unions and interfaces to a schema - Apollo Documentation](https://www.apollographql.com/docs/apollo-server/features/unions-interfaces.html)
* π [Graphql Tour Interfaces and Unions β Clay Allsopp](https://medium.com/the-graphqlhub/graphql-tour-interfaces-and-unions-7dd5be35de0d)
* π [Graphql Interfaces and Unions-How to design a Graphql Schema β David Mraz](https://graphqlmastery.com/blog/graphql-interfaces-and-unions-how-to-design-graphql-schema)
* π [Interfaces and Unions in GraphQL β AWS Documentation](https://docs.aws.amazon.com/appsync/latest/devguide/interfaces-and-unions.html)**[β¬ Back to Top](#table-of-contents)**
## 11. Interface Types
### Articles
* π [Interface Type - Apollo Documentation](https://www.apollographql.com/docs/apollo-server/features/unions-interfaces.html#Interface-type)
**[β¬ Back to Top](#table-of-contents)**
## 12. Directives
### Articles
* π [GraphQL Directives - Abhi Aiyer](https://medium.com/open-graphql/graphql-directives-3dec6106c384)
* π [Use custom directives to protect your GraphQL APIs - David He](https://codeburst.io/use-custom-directives-to-protect-your-graphql-apis-a78cbbe17355)
* π [An introduction to GraphQL: Directives - Flavioscopes](https://flaviocopes.com/graphql/#graphql-directives)
* π [The Power of GraphQL Directives - Εukasz Czyszczonik](https://blog.callstack.io/the-power-of-graphql-directives-81f4987fd76d)
* π [Schema Directives - Apollo](https://www.apollographql.com/docs/graphql-tools/schema-directives.html)
* π [SDL Directives - GraphQLJava](https://www.graphql-java.com/documentation/v11/sdl-directives/)
### Videos* π₯ [Query Directives - Novvum](https://twitter.com/novvumio/status/1111710417506783237)
* π₯ [Directives in GraphQL - FullStackHour](https://www.youtube.com/watch?v=HUKKNL2socs)**[β¬ Back to Top](#table-of-contents)**
## 13. Type Extension
### Articles
* π [Type Extension - Facebook](https://facebook.github.io/graphql/draft/#TypeExtension)
* π [Modularizing your GraphQL Schema Code: Extending types in multiple files - Apollo](https://blog.apollographql.com/d7f71d5ed5f2#14ac)
* π [Schema Extension - Facebook](https://facebook.github.io/graphql/June2018/#sec-Schema-Extension)
* π [The ultimate guide to schema stitching in GraphQL: Schema Extension - Rishichandra Wawhal](https://blog.hasura.io/the-ultimate-guide-to-schema-stitching-in-graphql-f30178ac0072/)### Videos
* π₯ [Extending Schema Types: Full-stack GraphQL with Apollo, Meteor & React - LevelUpTuts](https://www.youtube.com/watch?v=A7NvopS75dI)
**[β¬ Back to Top](#table-of-contents)**
## 14. Relay Specification
### Articles
* π [GraphQL Server Specification - Facebook](https://facebook.github.io/relay/docs/en/graphql-server-specification.html)
* π [Implementing the Relay spec in a GraphQL Server - Marc-Andre Giroux](http://mgiroux.me/2016/implementing-the-relay-spec-for-a-graphql-server/)
* π [Relay/GraphqL: De-mystifying Node ID - Soon Hin Khor](https://medium.com/code-oil/relay-graphql-de-mystifying-node-id-38757121b9c)
**[β¬ Back to Top](#table-of-contents)**## 15. Schema Definition Language - SDL
### Articles
* π [Defining Graph Database Schemas by using the GraphQL Schema Definition Language - Olaf Hartig](http://blog.liu.se/olafhartig/documents/graphql-schemas-for-property-graphs/)
* π [GraphQL SDL, Schema Definition Language - Prisma Documentation](https://www.prisma.io/blog/graphql-sdl-schema-definition-language-6755bcb9ce51)
* π [Three ways to represent your GraphQL schema - Sashko Stubailo](https://blog.apollographql.com/three-ways-to-represent-your-graphql-schema-a41f4175100d)
* π [A GraphQL SDL Reference - Alligator](https://alligator.io/graphql/graphql-sdl/)
**[β¬ Back to Top](#table-of-contents)**
## 16. GraphQLSchema object
### Articles
* π [GraphQL.js GraphQLSchema object - Sashko Stubailo](https://blog.apollographql.com/three-ways-to-represent-your-graphql-schema-a41f4175100d)
**[β¬ Back to Top](#table-of-contents)**
---
# Server
## 17. Setting Up a Server
### Articles
* π [Building a server with Apollo - Apollo GraphQL](https://www.apollographql.com/docs/apollo-server/essentials/server.html)
* π [Your First GraphQL Server β Clay Allsopp](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2)
* π [Learn to build a GraphQL server with minimal effort β Ian Wilson](https://medium.freecodecamp.org/learn-to-build-a-graphql-server-with-minimal-effort-fc7fcabe8ebd)
* π [Building a GraphQL Server with Node.js β Angus Croll](https://itnext.io/building-a-graphql-server-with-node-js-and-express-f8ea78e831f9)
* π [There and Back Again, A GraphQL Lifecycle Tale β Annie Lydens and Thomas Paresi](https://thoughtbot.com/blog/graphql-for-busy-people)### Videos
* π₯ [Single GraphQL Server with Multiple Endpoints and Databases β Ben Awad](https://www.youtube.com/watch?v=glsK0PBMjJs)
* π₯ [Building a GraphQL Server [Part 1] β Traversy Media](https://www.youtube.com/watch?v=PEcJxkylcRM)
* π₯ [Building a GraphQL Server with TypeScript](https://www.youtube.com/watch?v=20zGexpEitc)
* π₯ [Learn how to build an API using GraphQL with Apollo Server 2.0 β Fireship](https://www.youtube.com/watch?v=8D9XnnjFGMs)
* π₯ [Building Modern APIs with GraphQL - Robert Zhu](https://www.youtube.com/watch?v=bRnu7xvU1_Y)
* π₯ [GraphQL server tutorial for Node.js with SQL, MongoDB and REST β Apollo GraphQL](https://www.youtube.com/watch?v=PHabPhgRUuU)**[β¬ Back to Top](#table-of-contents)**
## 18. Schema
### Articles
* π [Understanding schema concepts - Apollo Documentation](https://www.apollographql.com/docs/apollo-server/essentials/schema.html)
* π [Graphql Server Basics: Schemas Explained - Prisma Documentation](https://www.prisma.io/blog/graphql-server-basics-the-schema-ac5e2950214e)
* π [GraphQL Schema Language Cheat Sheet - Hafiz Ismail](https://wehavefaces.net/graphql-shorthand-notation-cheatsheet-17cd715861b6)
* π [GraphQL Server Basics: GraphQL Schemas, TypeDefs & Resolvers Explained - Prisma](https://www.prisma.io/blog/graphql-server-basics-the-schema-ac5e2950214e)
### Videos
* π₯ [GraphQL Schema - The Net Ninja](https://www.youtube.com/watch?v=A8vtRvz-lK0)
**[β¬ Back to Top](#table-of-contents)**
## 19. Resolvers
### Articles
* π [GraphQL Resolvers: Best Practices - Mark Stuart](https://medium.com/paypal-engineering/graphql-resolvers-best-practices-cd36fdbcef55)
* π [Overview of Resolvers - Graphcool Documentation](https://www.graph.cool/docs/reference/functions/resolvers-su6wu3yoo2)
* π [GraphQL Server Basics: GraphQL Schemas, TypeDefs & Resolvers Explained - Prisma](https://www.prisma.io/blog/graphql-server-basics-the-schema-ac5e2950214e)
### Videos* π₯ [GraphQL Tutorial #9, The Resolve Function - The Net Ninja](https://www.youtube.com/watch?v=NWod5SFW13s)
**[β¬ Back to Top](#table-of-contents)**
## 20. Context
### Articles
* π [GraphQL Context and Services - Eric Clemmons](https://medium.com/@ericclemmons/graphql-context-services-6510269ef5a1)
* π [Learning about Execution and Context - GraphQL](https://graphql.org/learn/execution/)
* π [How does one set up database or other context in a graphql resolver - StackOverflow](https://stackoverflow.com/questions/44220597/how-does-one-set-up-database-or-other-context-in-a-graphql-resolver)
**[β¬ Back to Top](#table-of-contents)**## 21. Info Object
### Articles
* π [GraphQL Server Basics: Demystifying the info Argument in GraphQL Resolvers](https://www.prisma.io/blog/graphql-server-basics-demystifying-the-info-argument-in-graphql-resolvers-6f26249f613a/)
**[β¬ Back to Top](#table-of-contents)**## 22. Databases
### Articles
* π [Selecting database as data source for GraphQL Server β Wojciech Trocki](https://medium.com/@wtr/selecting-database-as-data-source-for-graphql-server-e3281fcefb2)
* π [Connecting Server and Database with the Prisma Client β Prisma](https://www.howtographql.com/graphql-js/5-connecting-server-and-database/)
* π [Using a GraphQL API for Database Administration β Michael Hunger](https://medium.freecodecamp.org/using-a-graphql-api-for-database-administration-1a5039b43c8f)
* π [GraphQL as a database query language - Predrag Gruevski](https://blog.kensho.com/compiled-graphql-as-a-database-query-language-72e106844282)
* π [Use all the databases β Loren Sands-Ramshaw](https://www.compose.com/articles/use-all-the-databases-part-1/)
* π [GraphQL for databases: A layer for universal database access β George Anadiotis](https://www.zdnet.com/article/graphql-for-databases-a-layer-for-universal-database-access/)
### Videos* π₯ [Build a GraphQL Server with Node.js and MongoDB - Ben Awad](https://www.youtube.com/watch?v=291i04TfGb0)
* π₯ [Build a GraphQL server for Node.js, using PostgreSQL/MySQL - Lee Benson](https://www.youtube.com/watch?v=DNPVqK_woRQ&t=3s)**[β¬ Back to Top](#table-of-contents)**
## 23. Dataloader
### Articles
* π [Using dataloader with GraphQL: A Concrete Example β John Tucker](https://codeburst.io/using-dataloader-with-graphql-a-concrete-example-9b21352f1676)
* π [The GraphQL Dataloader Pattern: Visualized β Marc-AndrΓ© Giroux](https://medium.com/@__xuorig__/the-graphql-dataloader-pattern-visualized-3064a00f319f)### Videos
* π₯ [DataLoader β Source code walkthrough β Lee Byron](https://www.youtube.com/watch?v=OQTnXNCDywA&feature=youtu.be)
* π₯ [DataLoader and the Problem it solves in GraphQL β knowthen](https://www.youtube.com/watch?v=ld2_AS4l19g)**[β¬ Back to Top](#table-of-contents)**
## 24. Entry Points
### Articles
* π [API Reference: entry points β GraphQL](https://graphql.org/graphql-js/graphql/#entry-point)
* π [Adding a GraphQL endpoint - Apollo Documentation](https://www.apollographql.com/docs/apollo-server/v1/setup.html)
* π [Running a scalable & reliable GraphQL endpoint with Serverless - Siddharth Gupta](https://serverless.com/blog/running-scalable-reliable-graphql-endpoint-with-serverless/)
* π [Serving over HTTP: Endpoints - Graphql.org](https://graphql.org/learn/serving-over-http/)### Videos
* π₯ [ContentaJS GraphQL 3 - The GraphQL entry points β Mateu](https://www.youtube.com/watch?v=7eLsfIZYuvU)
**[β¬ Back to Top](#table-of-contents)**
## 25. Schema Stitching
### Articles
* π [The ultimate guide to Schema Stitching in GraphQL - Rishichandra Wawhal](https://blog.hasura.io/the-ultimate-guide-to-schema-stitching-in-graphql-f30178ac0072/)
* π [GraphQL Stitching 101 - Artsy](http://artsy.github.io/blog/2018/12/11/GraphQL-Stitching/)
* π [Schema Stitching - Apollo Documentation](https://www.apollographql.com/docs/graphql-tools/schema-stitching.html)
* π [GraphQL Remote Schema Stitching in a Multi-Service Architecture - Suciu Vlad](https://medium.com/provablyfair/graphql-remote-schema-stitching-in-a-multi-service-architecture-ac329037f082)
* π [Apollo Federation - Apollo](https://blog.apollographql.com/apollo-federation-f260cf525d21)### Videos
* π₯ [API mashup: Combining APIs using GraphQL schema stitching - GitHub](https://www.youtube.com/watch?v=90JWZnuf7xQ)
* π₯ [GraphQL Schema Stitching - Ben Awad](https://www.youtube.com/watch?v=4i3W6g_u1Nw)
* π₯ [GraphQL Schema Stitching with Prisma and Contentful - Nikolas Burk(Contentful)](https://www.youtube.com/watch?v=w1loiyLD4eY)**[β¬ Back to Top](#table-of-contents)**
## 26. SDL First
### Articles
* π [The Problems of "Schema-First" GraphQL Server Development - Prisma](https://www.prisma.io/blog/the-problems-of-schema-first-graphql-development-x1mn4cb0tyl3)
* π [Schema-First GraphqL: The Road Less Travelled - Jakub Draganek](https://blog.mirumee.com/schema-first-graphql-the-road-less-travelled-cf0e50d5ccff)
### Videos
* π₯ [Schema First Development - Prisma](https://www.youtube.com/watch?v=SdWI7XaAeeY)
* π₯ [Schema-first vs. Code-first - Mirumee Labs](https://www.youtube.com/watch?v=Vmv0yC-7aKY)
**[β¬ Back to Top](#table-of-contents)**## 27. Code First
### Articles
* π [Code-first - Hot Chocolate](https://hotchocolate.io/docs/code-first)
* π [Introducing GraphQL Nexus Code First GraphQL Server Development - Prisma](https://www.prisma.io/blog/introducing-graphql-nexus-code-first-graphql-server-development-ll6s1yy5cxl5/)
* π [The Problems of Schema-First GraphQL - Prisma](https://www.prisma.io/blog/the-problems-of-schema-first-graphql-development-x1mn4cb0tyl3)**[β¬ Back to Top](#table-of-contents)**
## 28. Middleware
### Articles
* π [GraphQL Middleware - Prisma](https://www.prisma.io/blog/graphql-middleware-zie3iphithxy)
* π [Authentification and express middleware - Graphql.org](https://graphql.org/graphql-js/authentication-and-express-middleware/)
### Videos
* π₯ [GraphQL Middleware - Ben Awad](https://www.youtube.com/watch?v=0npsaFdrrFw)
* π₯ [GraphQL Middleware in 6 minutes - Jamie Barton](https://www.youtube.com/watch?v=5ydCPvrWRmg)**[β¬ Back to Top](#table-of-contents)**
---
# Client
## 29. Fetching
### Articles
* π [4 simple ways to call a GraphQL API - Sashko Stubailo](https://blog.apollographql.com/4-simple-ways-to-call-a-graphql-api-a6807bcdb355)
### Videos
* π₯ [Fetching data from an API in GraphQL - Ben Awad](https://www.youtube.com/watch?v=RDQyAcvmbpM)
* π₯ [Building a GraphQL Server, RootQuery & Fetching Data - Traversy Media](https://www.youtube.com/watch?v=e9Zxzr7sy60)
**[β¬ Back to Top](#table-of-contents)**## 30. Fragments
### Articles
* π [Using fragments - Apollo](https://www.apollographql.com/docs/react/advanced/fragments.html)
* π [How to query your schema with GraphQL fragments - David MrΓ‘z](https://medium.com/graphql-mastery/graphql-fragments-and-how-to-use-them-8ee30b44f59e)
* π [GraphQL Fragments are the Best Match for UI Components - Samer Buna](https://www.manifold.co/blog/graphql-fragments-are-the-best-match-for-ui-components-72b8f61c20fe)### Videos
* π₯ [How GraphQL Fragments Work - Ben Awad](https://www.youtube.com/watch?v=AAHR7eBKLU8)
**[β¬ Back to Top](#table-of-contents)**
## 31. Variables
### Articles
* π [GraphQL Tour: Variables - Clay Allsop](https://medium.com/the-graphqlhub/graphql-tour-variables-58c6abd10f56)
* π [Introduction to GraphQL: GraphQL Variables - Flavioscopes](https://flaviocopes.com/graphql/#graphql-variables)
### Videos* π₯ [GraphQL Tips: Query Variables - Novvum](https://twitter.com/novvumio/status/1106283961892962305)
* π₯ [GraphQL Tutorial #32: Query Variables - The Net Ninja](https://www.youtube.com/watch?v=Rvx1HLMK1-U)
* π₯ [GraphQL Tips: Default Values for Variables - Novvum](https://twitter.com/novvumio/status/1108821324363763712)**[β¬ Back to Top](#table-of-contents)**
## 32. Alias
### Articles
* π [An Introduction to GraphQL: Aliases - GraphQL Mastery](https://flaviocopes.com/graphql/#aliases)
* π [How to use GraphQL aliases - GraphQL Mastery](https://medium.com/graphql-mastery/graphql-quick-tip-aliases-567303a9ddc5)
* π [More GraphQL Concepts: Aliases - HowtoGraphQL](https://www.howtographql.com/advanced/2-more-graphql-concepts/)### Videos
* π₯ [GraphQL Tips: Aliases - Novvum](https://twitter.com/novvumio/status/1116423304045264897)**[β¬ Back to Top](#table-of-contents)**
## 33. Polling
### Articles
* π [Dynamic GraphQL polling with React and Apollo Client - David Glasser](https://blog.apollographql.com/dynamic-graphql-polling-with-react-and-apollo-client-fb36e390d250)
**[β¬ Back to Top](#table-of-contents)**## 34. Cache
### Articles
* π [A Different Approach to GraphQL Caching - Adam Reacts](https://adamrackis.dev/graphql-caching-and-micro/)
* π [Understanding Caching - Weblab Technology](https://medium.com/p/58756ff253d8#9388)
* π [Caching with GraphQl: What are the best options? - Will Howard](https://blog.usejournal.com/caching-with-graphql-what-are-the-best-options-e161b0f20e59)
* π [GraphQL VS Rest: Caching - Phil Sturgeon](https://philsturgeon.uk/api/2017/01/26/graphql-vs-rest-caching/)
* π [Learn Caching - Graphql.org](https://graphql.org/learn/caching/)
* π [Overview: GraphQL Query Parsing and Caching at the Edge - Monika Rathor](https://developer.akamai.com/blog/2018/10/29/overview-graphql-query-parsing-and-caching-edge)
* π [GraphQL & Caching: The Elephant in the Room - Marc-AndrΓ© Giroux](https://blog.apollographql.com/graphql-caching-the-elephant-in-the-room-11a3df0c23ad)### Videos
* π₯ [GraphQL Caching using DataLoader β Fun Fun Function](https://www.youtube.com/watch?v=--AguZ20lLA)
* π₯ [Feature: GraphQL Caching with DataLoader β Ben Awad](https://www.youtube.com/watch?v=tSQ7WuAcAbU)**[β¬ Back to Top](#table-of-contents)**
---
# Best Practices
## 35. Schema Design
### Articles
* π [GraphQL best practices for GraphQL schema design - David Mraz](https://graphqlmastery.com/blog/graphql-best-practices-for-graphql-schema-design)
* π [GraphQL Schema Design: Building Evolvable Schemas - Marc-AndrΓ© Giroux](https://blog.apollographql.com/graphql-schema-design-building-evolvable-schemas-1501f3c59ed5)
* π [Writing a Graphql Schema - Eitan Frailich](https://github.com/davidyaha/graphql-workshop/blob/master/manuals/step-2-writing-a-schema.md)
* π [Abstract Demand Oriented Schema - Apollo](https://principledgraphql.com/agility#4-abstract-demand-oriented-schema)
### Videos* π₯ [GraphQL Schema Design β Marc-AndrΓ© Giroux](https://www.youtube.com/watch?v=pJamhW2xPYw)
**[β¬ Back to Top](#table-of-contents)**
## 36. Pagination
### Articles
* π [Pagination](https://graphql.org/learn/pagination/)
**[β¬ Back to Top](#table-of-contents)**
## 37. Logging
### Articles
* π [GraphQL Log - withSpectrum](https://github.com/withspectrum/graphql-log)
* π [Structured Logging - Apollo](https://principledgraphql.com/operations#9-structured-logging)
**[β¬ Back to Top](#table-of-contents)**
## Contributors
Thanks goes to these wonderful people ([emoji key](https://github.com/all-contributors/all-contributors#emoji-key)):
| [
Kelsey Yim](https://github.com/kelseyyim)
[π§](#maintenance-kelseyyim "Maintenance") | [
Rohit Ravikoti](https://novvum.io)
[π§](#maintenance-rohit-ravikoti "Maintenance") | [
Alli Colyer](http://www.alli.science)
[π](#content-Allicolyer "Content") | [
Raj K Singh](https://www.novvum.io)
[π](#content-rajinwonderland "Content") | [
Jorge Carlos](https://github.com/Jorge0521)
[π](#content-Jorge0521 "Content") | [
Henry Yang](https://github.com/hkyang995)
[π](#content-hkyang995 "Content") | [
TrevHeath](https://github.com/TrevHeath)
[π](#content-TrevHeath "Content") |
| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!