@apollo/server
这个
@apollo/server软件包是自阿波罗服务器 4 以来的新软件包 。 以前阿波罗服务器的主要版本使用了一套从apollo-server,例如apollo-server, (中文(简体) ),apollo-server-express, (中文(简体) ),apollo-server-core等 (中文(简体) ).
通知: 在阿波罗2025年的GraphQL峰会上加入1000+工程师进行会谈,作坊和办公时间. 2025年10月6日至8日在旧金山举行. 过来这里 - >
一个 TypeScript/ JavaScript 图形QL 服务器
阿波罗服务器是一个 开源,符合光谱的 GraphQL 服务器 兼容任意 GraphQL 客户端,包括 阿波罗客户端。这是构建一个可使用来自任何来源的数据的可制取的自文件化GraphQL API的最佳方法.
您可以使用阿波罗服务器作为 :
阿波罗服务器提供了一个简单的API,用于与任何节点.js的网络框架或无服务器环境相融合. 这个 @apollo/server 包件本身载有一个最小可配置的独立网络服务器,处理 CORS 和身体解析出框。 与其他环境的融合由社区维持.
阿波罗服务器提供:
- 直走设置,因此您的客户端开发者可以快速开始获取数据
- 逐步通过,使您能够添加 功能,因为需要
- 通用兼容性 包含任何数据源、任何构建工具以及任何 GraphQL 客户端
- 生产准备,使您能够自信地运行您的图表在制作中
文档
阿波罗服务器的完整文档可在 我们的文件网站。这个 README 显示服务器运行的基本原理( 既独立运行, 也与 Express 运行) , 但大多数特性只记录在我们的文件网站上 .
开始: 独立的服务器
也可以检查 开始中 在阿波罗服务器文档中提供更多细节的指南,包括TypeScript和JavaScript中的例子.
阿波罗服务器的独立服务器可以让你得到一个GraphQL服务器并快速运行,而不需要自己建立HTTP服务器. 它允许GraphQL逻辑和Express集成一样的所有配置,但不能提供将精细的纹理切入您服务器的HTTP特定行为的能力.
首先,安装阿波罗服务器和JavaScript执行核心GraphQL算法:
npm install @apollo/server graphql
然后,写下以下 server.mjs. (使用 .mjs 扩展名,节点允许您使用 await 顶级关键字. )
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}`);
现在运行您的服务器 :
node server.mjs
打开它在网页浏览器中打印的 URL 。 它会显示 阿波罗沙盒,用于运行 GraphQL 操作的网络工具。 尝试运行操作 query { hello }来啊!
开始: 执行中间软件
阿波罗服务器的"快递"中间软件允许您运行您的 GraphQL 服务器,作为应用软件的一部分 快递,最受欢迎的节点网络框架.
首先,安装阿波罗服务器,它的Express中间软件,JavaScript执行核心GraphQL算法,Express,以及用于CORS头的标准Express中间软件包:
npm install @apollo/server @as-integrations/express5 graphql express cors
如果使用 Typescription, 您可能还需要安装额外的类型声明包作为开发依赖, 以避免在导入上述软件包时出现常见错误( 即找不到模块的声明文件 ) cors':
npm install --save-dev @types/cors @types/express
然后,写下以下 server.mjs. (使用 .mjs 扩展名,节点允许您使用 await 顶级关键字. )
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`);
现在运行您的服务器 :
node server.mjs
打开它在网页浏览器中打印的 URL 。 它会显示 阿波罗沙盒,用于运行 GraphQL 操作的网络工具。 尝试运行操作 query { hello }来啊!