GraphQL Context & Services
Having used GraphQL for quite some time, two of my favorite patterns are:
Contextas aclassAbstracting complexity into Service APIs via
context.services
Note: You can find the source code for the this screenshot & demo at: https://github.com/ericclemmons/graphql-context-services/
Rationale
- Using
Context(instead of a plain{…}object) moves complexity from within your GraphQL middleware to a separate, testable layer.

Contextcan have a strict, testable API for your resolvers to use, instead of ad-hoc reliance onreq.queryorreq.body.

API calls within resolvers are simplified, as their only responsibility is to shepherd arguments from the query to the service layer.
You can leverage Apollo’s
dataSources, even with the standardexpress-graphqllibrary!

That’s it!
If you haven’t already, view & play with this example on CodeSandbox.
If you enjoyed this, give me a follow at @ericclemmons on Twitter!
