GraphQL Context & Services
2 min readOct 18, 2018
Having used GraphQL for quite some time, two of my favorite patterns are:
Context
as aclass
- Abstracting 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.
Context
can have a strict, testable API for your resolvers to use, instead of ad-hoc reliance onreq.query
orreq.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-graphql
library!
RESTDataSource
automatically caches based on HTTP response headers!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!