This is the documentation for the 1.x version of Apollo Server. For new projects, we recommend using Apollo Server 2
This server can be queried from any GraphQL client, since it supports all of the common semantics for sending GraphQL over HTTP, as documented on graphql.org. Apollo Server also supports some small extensions to the protocol, such as sending multiple GraphQL operations in one request. Read more on the sending requests page.
If you want to get started quickly, take a look at the quick start code snippet. This will get you started with a Node.js GraphQL server in about 10 seconds.
End-to-end GraphQL server tutorial
If you’re looking to learn about how to connect to different data sources, check out our recently updated tutorial which walks you through building a server from start to finish: How To Build a GraphQL Server to talk to SQL, MongoDB, and REST
Selecting the right package
Apollo Server is actually a family of npm packages, one for each Node.js HTTP server library.
Pick the one below that suits your needs:
# Pick the one that matches your server framework npm install graphql apollo-server-express # for Express or Connect npm install graphql apollo-server-hapi npm install graphql apollo-server-koa npm install graphql apollo-server-restify npm install graphql apollo-server-lambda npm install graphql apollo-server-micro npm install graphql apollo-server-azure-functions npm install graphql apollo-server-adonis
If you don’t see your favorite server there, file a PR!
At the end of the day, Apollo Server is a simple, production-ready solution without too many features. Here’s what you can do with it:
- Attach a GraphQL schema to your HTTP server to serve requests
- Attach GraphQL and GraphiQL via separate middlewares, on different routes
- Accept queries via GET or POST
- Support HTTP query batching
- Support Apollo Tracing to get performance information about your server
- Support Apollo Cache Control to inform caching gateways such as Apollo Engine
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 using the library.
- Simplicity: Keeping things simple, for example supporting a limited set of transports, makes Apollo Server easier to use, easier to contribute to, and more secure.
- Performance: Apollo Server is well-tested and production-ready.