apollo-server/packages/apollo-server-hapi
Jesse Rosenberger 126dac7d3c
prettier: The tragic reformatting associated with c9375c40.
Some changes are easier to mentally consume before they've been prettier'd.

While I'll certainly allow Prettier to do what it wants to do, I've confined
it's changes to this commit for easier reviewability.

Note to the reviewer: this commit is exactly the result of running the
`npm run lint-fix` command on a clean Git working tree.

Ref: c9375c405b
2018-09-26 22:46:49 +03:00
..
src prettier: The tragic reformatting associated with c9375c40. 2018-09-26 22:46:49 +03:00
.npmignore include readme for npm packages 2017-10-23 15:13:31 -07:00
package.json Revert #1698 renovate/graphql tools 4.x (#1716) 2018-09-24 20:47:18 +03:00
README.md fix hapi readme 2018-07-13 13:35:53 -07:00
tsconfig.json Use strict top-level tsconfig and fix type issues or override per-package 2018-08-11 16:45:03 +02:00

title description
Hapi Setting up Apollo Server with Hapi

npm version Build Status Coverage Status Get on Slack

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!