apollo-server/packages/apollo-server-hapi
Chang Wang 879ed19034 Publish
- apollo-cache-control@0.5.2
 - apollo-datasource-rest@0.3.2
 - apollo-engine-reporting@1.0.4
 - apollo-server-azure-functions@2.4.4
 - apollo-server-cloud-functions@2.4.4
 - apollo-server-cloudflare@2.4.4
 - apollo-server-core@2.4.4
 - apollo-server-errors@2.2.1
 - apollo-server-express@2.4.4
 - apollo-server-fastify@2.4.4
 - apollo-server-hapi@2.4.4
 - apollo-server-integration-testsuite@2.4.4
 - apollo-server-koa@2.4.4
 - apollo-server-lambda@2.4.4
 - apollo-server-micro@2.4.4
 - apollo-server-plugin-base@0.3.4
 - apollo-server-testing@2.4.4
 - apollo-server@2.4.4
 - apollo-tracing@0.5.2
 - graphql-extensions@0.5.4
2019-02-21 13:05:33 -05:00
..
src (tests) Switch to a very explicit Node.js 10 restriction. 2018-11-30 19:00:55 +02:00
.npmignore include readme for npm packages 2017-10-23 15:13:31 -07:00
jest.config.js Replace {} with Object.create(null) in jest.config.js 2018-10-12 13:00:13 +02:00
package.json Publish 2019-02-21 13:05:33 -05:00
README.md Replace Slack shields in project README.mds with Spectrum shields. (#2345) 2019-02-20 17:55:16 +02:00
tsconfig.json Remove test dependencies from non-test tsconfig.json files 2018-10-11 12:58:03 +02:00

title description
Hapi Setting up Apollo Server with Hapi

npm version Build Status Coverage Status Join the community on Spectrum

This is the Hapi integration of Apollo Server. Apollo Server is a community-maintained open-source Apollo Server that works with many Node.js HTTP server frameworks. Read the docs. Read the CHANGELOG.

npm install apollo-server-hapi@rc

Usage

The code below requires Hapi 17 or higher.

const { ApolloServer, gql } = require('apollo-server-hapi');
const Hapi = require('hapi');

async function StartServer() {
  const server = new ApolloServer({ typeDefs, resolvers });

  const app = new Hapi.server({
    port: 4000
  });

  await server.applyMiddleware({
    app,
  });

  await server.installSubscriptionHandlers(app.listener);

  await app.start();
}

StartServer().catch(error => console.log(error));

Context

The context is created for each request. The following code snippet shows the creation of a context. The arguments are the request, the request, and h, the response toolkit.

new ApolloServer({
  typeDefs,
  resolvers,
  context: async ({ request, h }) => {
    return { ... };
  },
})

Principles

Apollo Server is built with the following principles in mind:

  • By the community, for the community: Apollo Server's development is driven by the needs of developers
  • Simplicity: by keeping things simple, Apollo Server is easier to use, easier to contribute to, and more secure
  • Performance: Apollo Server is well-tested and production-ready - no modifications needed

Anyone is welcome to contribute to Apollo Server, just read CONTRIBUTING.md, take a look at the roadmap and make your first PR!