apollo-server README

The project's README from github.com/apollographql/apollo-server. As one markdown file: README.md.

@apollo/server

This @apollo/server package is new since Apollo Server 4. Previous major versions of Apollo Server used a set of package names starting with apollo-server, such as apollo-server, apollo-server-express, apollo-server-core, etc.

npm version Build Status Join the community


Announcement: Join 1000+ engineers at GraphQL Summit 2025 by Apollo for talks, workshops, and office hours. Oct 6-8, 2025 in San Francisco. Get your pass here ->


A TypeScript/JavaScript GraphQL server

Apollo Server is an open-source, spec-compliant GraphQL server that's compatible with any GraphQL client, including Apollo Client. It's the best way to build a production-ready, self-documenting GraphQL API that can use data from any source.

You can use Apollo Server as:

Apollo Server provides a simple API for integrating with any Node.js web framework or serverless environment. The @apollo/server package itself ships with a minimally-configurable, standalone web server which handles CORS and body parsing out of the box. Integrations with other environments are community-maintained.

Apollo Server provides:

Documentation

Full documentation for Apollo Server is available on our documentation site. This README shows the basics of getting a server running (both standalone and with Express), but most features are only documented on our docs site.

Getting started: standalone server

You can also check out the getting started guide in the Apollo Server docs for more details, including examples in both TypeScript and JavaScript.

Apollo Server's standalone server lets you get a GraphQL server up and running quickly without needing to set up an HTTP server yourself. It allows all the same configuration of GraphQL logic as the Express integration, but does not provide the ability to make fine-grained tweaks to the HTTP-specific behavior of your server.

First, install Apollo Server and the JavaScript implementation of the core GraphQL algorithms:

npm install @apollo/server graphql

Then, write the following to server.mjs. (By using the .mjs extension, Node lets you use the await keyword at the top level.)

import { ApolloServer } from '@apollo/server';
import { startStandaloneServer } from '@apollo/server/standalone';

// The GraphQL schema
const typeDefs = `#graphql
  type Query {
    hello: String
  }
`;

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

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

const { url } = await startStandaloneServer(server);
console.log(`🚀 Server ready at ${url}`);

Now run your server with:

node server.mjs

Open the URL it prints in a web browser. It will show Apollo Sandbox, a web-based tool for running GraphQL operations. Try running the operation query { hello }!

Getting started: Express middleware

Apollo Server's Express middleware lets you run your GraphQL server as part of an app built with Express, the most popular web framework for Node.

First, install Apollo Server, its Express middleware, the JavaScript implementation of the core GraphQL algorithms, Express, and the standard Express middleware package for CORS headers:

npm install @apollo/server @as-integrations/express5 graphql express cors

If using Typescript you may also need to install additional type declaration packages as development dependencies to avoid common errors when importing the above packages (i.e. Could not find a declaration file for module 'cors'):

npm install --save-dev @types/cors @types/express

Then, write the following to server.mjs. (By using the .mjs extension, Node lets you use the await keyword at the top level.)

import { ApolloServer } from '@apollo/server';
import { expressMiddleware } from '@as-integrations/express5';
import { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer'
import express from 'express';
import http from 'http';
import cors from 'cors';

// The GraphQL schema
const typeDefs = `#graphql
  type Query {
    hello: String
  }
`;

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

const app = express();
const httpServer = http.createServer(app);

// Set up Apollo Server
const server = new ApolloServer({
  typeDefs,
  resolvers,
  plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],
});
await server.start();

app.use(
  cors(),
  express.json(),
  expressMiddleware(server),
);

await new Promise((resolve) => httpServer.listen({ port: 4000 }, resolve));
console.log(`🚀 Server ready at http://localhost:4000`);

Now run your server with:

node server.mjs

Open the URL it prints in a web browser. It will show Apollo Sandbox, a web-based tool for running GraphQL operations. Try running the operation query { hello }!

apollo-server (apollographql/apollo-server)

Searching Database…

Что это такое?Apollo Server — это открытый GraphQL-сервер для Node.js, полностью соответствующий спецификации. Он позволяет создать готовый к боевой эксплуатации GraphQL API с автоматической документацией из любого источника данных. Сервер может работать самостоятельно или встраиваться во фреймворки вроде Express, Connect, Hapi или Koa.
Это самостоятельный сервер или библиотека, которую я добавляю в своё приложение?Это библиотека npm (@apollo/server), которую вы устанавливаете в свой проект на Node.js. Из коробки она включает минимально настраиваемый автономный HTTP-сервер, но может работать и как промежуточное ПО (middleware) внутри существующего приложения на Express или другом фреймворке.
Как мне запустить простой GraphQL-сервер?Установите @apollo/server и пакет graphql через npm, опишите схему и резолверы в файле server.mjs, затем запустите его через Node (расширение .mjs позволяет использовать await на верхнем уровне). При открытии адреса, выведенного в консоли, откроется Apollo Sandbox для тестирования запросов, например 'query { hello }'.
Что нужно иметь перед началом работы?Нужны Node.js 20 или новее и npm 8.19.2+, а также пакет 'graphql' в роли peer-зависимости для выполнения базового GraphQL. Для интеграции с Express понадобятся также express и пакет промежуточного ПО cors.
Интеграции для Connect, Hapi и Koa поддерживаются самой Apollo?Нет. Вместе с этим проектом поставляется только промежуточное ПО для Express. Интеграции для Connect, Hapi, Koa и других сред поддерживаются сообществом, а не основной командой Apollo.
Что такое Apollo Sandbox?Apollo Sandbox — это веб-IDE для GraphQL, которую Apollo Server автоматически отдаёт по адресу вашего сервера. Она позволяет выполнять запросы вроде 'query { hello }' прямо в браузере без дополнительной настройки.
Можно ли использовать Apollo Server для GraphQL Federation?Да. Помимо работы в роли самостоятельного сервера, он может выступать GraphQL-сервером для подграфа в федеративном суперграфе или шлюзом перед федеративным суперграфом.
Почему пакет называется @apollo/server, а не apollo-server?@apollo/server — это единый пакет, появившийся в Apollo Server 4. Он заменил прежние раздельные пакеты (apollo-server, apollo-server-express, apollo-server-core), которые использовались в более ранних основных версиях.
Работает ли он с любым GraphQL-клиентом?Да. Он полностью соответствует спецификации и совместим с любым GraphQL-клиентом, включая, но не ограничиваясь, Apollo Client.
Size
136.6 MB
Stars
14K
Age
10y
Commits · 90 Days