fastify-apollo-step
Set up Apollo Server with Fastify.
update dependencies to the latest version.
"dependencies": {
"@types/node": "^14.14.8",
"apollo-server-core": "^2.19.0",
"fastify": "^3.8.0",
"graphql": "^15.4.0",
"graphql-playground-html": "^1.6.29",
"graphql-subscriptions": "^1.1.0",
"graphql-tools": "^7.0.1"
}
fastify
Fast and low overhead web framework, for Node.js
apollo
A community building flexible open source tools for GraphQL.
fastify-apollo-step
As Apollo offical page said that Apollo Server can work with many Node.js HTTP frameworks, but no fastify in that list. So let's make one.
fastify-apollo-step is designed as a plugin of fastify, just call register
to use it.
fastify-apollo-step also supports graphiql/playground module of Apollo Server.
Usage
npm install --save fastify-apollo-step apollo-server-core graphql fastify graphql-playground-html graphql-tools graphql-subscriptions
- by fastify, just need apollo-server-core, not apollo-server
Options
fastify-apollo-step can be configurated with the follow option object, inclues itself configurations and Apollo Server configurations.
const options = path: '/ql' context: undefined gqlSchema: undefined typeDefs: typeDefs resolvers: resolvers subscriptions: enabled: true path: '/subscriptions' { } { } graphiql: enabled: true path: '/iql' { ; };
path
: GraphQL module endpoint;gqlSchema
: GraphQL schema, optional iftypeDefs
andresolvers
exist;typeDefs
: GraphQL type definitions, optional ifschema
exists;resolvers
: GraphQL resolver definitions, optional ifschema
exists;subscriptions
: Options of subscription;graphiql
: Options of GraphiQL of Playground;routeBeforeHandler
: beforeHandler function of Fastify while calls QL or iQL;
Example
const options = path: '/ql' typeDefs: typeDefs resolvers: resolvers ...; fastify; fastify;
TypeScript
Do NOT support TypeScript because NOT compatible with latest Fastify.
Ready. But I am not good at TypeScript yet.
To conflict with Fastify Plugin Option, I have to change 'schema' and 'beforeHandler' of FastifyApollo's, Please refer to ./test/ts/subscription.ts.
Test
npm run query
npm run mutation
npm run subscription
Notes: Graphsql query must be with 'operationName' now.
query [querybook] {
books {
author
title
}
}
ScreenShots
- Query
- Mutaton
- Subscription