A very basic example application using Apollo Server for the Express, Connect, Hapi and Koa frameworks as based on the Apollo Server docs.
The below covers the following:
- GraphQL Tools
makeExecutableScehma - Basic Resolvers
- Basic Mocking
- GraphiQL
The server files can be found for the respective frameworks in the following:
You can run each seperately using the following scripts:
npm run server:expressnpm run server:connectnpm run server:hapinpm run server:koa
The following are gotcha's I ran into that aren't clear when working with Apollo Server:
- Koa - must be version 2 or higher, use
npm i --save koa@2 - Koa Router - must be version 7 or higher, use
npm i --save koa-router@7 - Koa Body Parser - must be version 3 or higher, use
npm i --save koa-bodyparser@3 - Hapi - currently GraphiQL is experiencing issues. It seems to be due to the deep copying of plugin options by Hapi. See this thread for more - apollographql/apollo-server#158 (comment). A temporary workaround is provided in that thread and detailed below.
Passing the apolloOptions in as a function instead of plain object will workaroud the GraphiQL issues. See server.hapi.js for an example.
apolloOptions: () => ({
schema: executableSchema,
context: {},
}),
Follow apollo-server issue #158 for more information on this issue and its resolution.