Apollo Server Integration for Hapi
Introduction
An Apollo Server integration for use with Hapi.
This is a simple package that easily allows you to connect your own Hapi server implementation to an Apollo Server instance.
Requirements
Installation
npm install @as-integrations/hapi @apollo/server graphql @hapi/hapi
Usage
Setup Hapi & Apollo Server like you usually would and then connect the two by using the hapiApollo
plugin:
import { Server } from '@hapi/hapi';
import { ApolloServer, BaseContext } from "@apollo/server";
import hapiApollo from "@as-integrations/hapi";
const apollo = new ApolloServer<BaseContext>({
typeDefs,
resolvers,
});
await apolloServer.start();
const hapi = new Server({
host: 'localhost',
port: 5000
});
await hapi.register({
plugin: hapiApollo,
options: {
apolloServer,
path: '/graphql'
}
});
await hapi.start();
Note: You must call and await apollo.start()
before using the integration.
Context
Apollo Server v4 has moved context setup outside of the ApolloServer
constructor.
Define you're own context function and pass it in to the context
option for the plugin.
For example:
await hapi.register({
plugin: hapiPlugin,
options: {
context: async ({ request }) => ({
token: request.headers.token
}),
apolloServer
}
});
Contributors