No description
Find a file
Jesse Rosenberger 33885db0b9
Improve and cleanup the README.md, removing duplicated examples.
First, the getting started example was incorrect and instructed users to
install the wrong package.

Furthermore, each integration example was duplicated on its individual
package `README.md` and the verbosity of this `README.md` (which is for the
entire monorepo) makes it unclear where to start.

This change points those who desire the integration approach to the specific
page which has more information about those integrations (and mostly the
same content in terms of examples which are listed here, albeit with subtle
variations.)
2019-02-26 11:18:55 +02:00
.circleci Add support for Jest JUnit test output for consumption by CircleCI. 2018-09-26 22:47:58 +03:00
.github Set GH CODEOWNERS and update the README (#2034) 2018-11-28 15:18:48 +02:00
.vscode Add TypeScript watch as default build task 2018-10-12 11:23:30 +02:00
__mocks__ Fix apollo-server-env mock 2018-10-11 14:43:29 +02:00
docs Remove unnecessary --save flags from npm install commands. 2019-02-26 11:18:52 +02:00
packages Update apollo-server badges. 2019-02-26 11:18:54 +02:00
types Switch json-stable-stringify to fast-json-stable-stringify. (#2065) 2018-12-19 20:06:17 +02:00
.gitignore remove .DS_Store (#2055) 2018-11-30 18:43:01 +02:00
.prettierignore Move prettier file globs into .prettierrc.js file. 2018-09-26 14:32:09 +03:00
.prettierrc.js Move prettier file globs into .prettierrc.js file. 2018-09-26 14:32:09 +03:00
CHANGELOG.md Fix: Remove incorrect cors option type from apollo-server-express's constructor (#2373) 2019-02-25 17:32:18 +02:00
codecov.yml Allow 0.5% drop in codecov since it sometimes drops by tenths of percents. 2018-10-30 17:04:36 +02:00
CONTRIBUTING.md Tick off Prettier checkmarks, which were present on CI but not locally. (#880) 2018-03-16 10:25:07 +02:00
DESIGN.md Tick off Prettier checkmarks, which were present on CI but not locally. (#880) 2018-03-16 10:25:07 +02:00
jest.config.base.js Migrate apollo-graphql package to apollo-tooling repo (#2316) 2019-02-14 12:41:58 +02:00
lerna.json Clean up lerna.json 2018-08-31 11:01:32 +02:00
LICENSE cherry-pick changes from master 2016-07-05 15:01:49 -07:00
netlify.toml Introduce a netlify.toml configuration to fix docs generation on Netlify. 2018-08-28 12:05:12 +03:00
package-lock.json chore(deps): update dependency @types/jest to v24.0.9 (#2379) 2019-02-26 08:41:03 +00:00
package.json chore(deps): update dependency @types/jest to v24.0.9 (#2379) 2019-02-26 08:41:03 +00:00
README.md Improve and cleanup the README.md, removing duplicated examples. 2019-02-26 11:18:55 +02:00
renovate.json Keep @types/node types at v8. (#2344) 2019-02-20 15:02:49 +02:00
ROADMAP.md Setup prettier (#724) 2018-01-08 15:08:01 -08:00
tsconfig.base.json Enable forceConsistentCasingInFileNames in tsconfig.base.json 2018-10-11 23:10:44 +02:00
tsconfig.build.json Merge branch 'master' into re-stage-pr-1971 2019-02-14 15:01:00 +02:00
tsconfig.json Remove test dependencies from non-test tsconfig.json files 2018-10-11 12:58:03 +02:00
tsconfig.test.base.json Expose global fetch and URL types to avoid relying on dom lib 2018-10-11 23:10:45 +02:00
tsconfig.test.json Merge branch 'master' into re-stage-pr-1971 2019-02-14 15:01:00 +02:00

GraphQL Server for Express, Connect, Hapi, Cloudflare workers, and more

npm version Build Status Join the community on Spectrum

Apollo Server is a community-maintained open-source GraphQL server. It works with pretty much all Node.js HTTP server frameworks, and we're happy to take PRs for more! Apollo Server works with any GraphQL schema built with GraphQL.js, so you can build your schema with that directly or with a convenience library such as graphql-tools.

Documentation

Read the docs!

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!

Getting started

Apollo Server is super easy to set up. Just npm install apollo-server-<integration>, write a GraphQL schema, and then use one of the following snippets to get started. For more info, read the Apollo Server docs.

There are two installation patterns:

  • Standalone: To get started without integrating with an existing web framework, use the apollo-server package.
  • Integrations: For applications which have already use a web framework (e.g. express, koa, hapi, etc.), use the appropriate Apollo Server integration package.

Installation: Standalone

In a new project, install the apollo-server and graphql dependencies using:

npm install apollo-server graphql

Then, create an index.js which defines the schema and its functionality (i.e. resolvers):

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

// The GraphQL schema
const typeDefs = gql`
  type Query {
    "A simple type for getting started!"
    hello: String
  }
`;

// A map of functions which return data for the schema.
const resolvers = {
  Query: {
    hello: () => 'world',
  },
};

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

server.listen().then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
});

Due to its human-readability, we recommend using schema-definition language (SDL) to define a GraphQL schema but a GraphQLSchema object from graphql-js can also be specified in place of typeDefs and resolvers using the schema property:

const server = new ApolloServer({
  schema: ...
});

Finally, start the server using node index.js and open your web-browser to the URL which is output on the console.

For more details, check out the Apollo Server Getting Started guide of the documentation, or for a more comprehensive understanding, see the fullstack tutorial.

For questions, the Apollo commuinty on Spectrum.chat is a great place to get assistance.

Installation: Integrations

While the standalone installation above can be used without making a decision about which web framework to use, the Apollo Server integration packages are paired with specific web frameworks (e.g. Express, Koa, hapi).

The following web frameworks have Apollo Server integrations, and each of these linked integrations has its own installation instructions and examples on its package README.md:

See the links above for more details on a specific integration.

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 { ... };
  },
})

Apollo Server Development

If you want to develop Apollo Server locally you must follow the following instructions:

  • Fork this repository

  • Install the Apollo Server project in your computer

git clone https://github.com/[your-user]/apollo-server
cd apollo-server
npm install
cd packages/apollo-server-<integration>/
npm link
  • Install your local Apollo Server in other App
cd ~/myApp
npm link apollo-server-<integration>

Maintainers