Apollo Server 用于 JavaScript (Node.js):完整指南及示例
\n\nApollo Server 是一个强大且灵活的库,用于在 Node.js 上创建 GraphQL 服务器。它是 Apollo GraphQL 生态系统的一部分,为开发者提供了构建高性能、可扩展且易于维护的 API 的便捷工具集。如果您熟悉 REST,那么可以将 GraphQL 视为一种替代方案,其中客户端自行决定需要哪些数据,而服务器则只返回所请求的数据。Apollo Server 处理所有日常事务:解析查询、验证模式、执行解析器以及格式化响应。
\n\n为什么需要 Apollo Server?首先,它极大地简化了 GraphQL 服务器的开发。您无需编写解析器、验证器或担心安全性(防止 SQL 注入、限制查询深度等)——所有这些都已内置。其次,Apollo Server 支持多种集成:与 Express、Fastify、Koa、AWS Lambda、Azure Functions 等平台。这意味着您可以在任何地方部署服务器——从简单的本地应用程序到无服务器函数。第三,该库正在积极开发中,拥有庞大的社区和优秀的文档,使其成为 Node.js 中 GraphQL 的事实标准。
\n\n在本文中,我们将详细介绍安装、主要方法,编写几个工作示例,并提供性能建议。本材料对于刚开始接触 GraphQL 的新手以及希望加深对 Apollo Server 了解的经验丰富的开发者都很有用。
\n\n1. 安装
\n\n要使用 Apollo Server,您需要 Node.js 14 或更高版本。通过 npm(或 yarn)进行安装。主要包是 @apollo/server。您还需要 graphql——这是 GraphQL 语言的核心,没有它 Apollo Server 将无法工作。
npm install @apollo/server graphql\n\n如果您计划将 Apollo Server 与 Express 一起使用(最流行的选择),请额外安装:
\n\nnpm install express cors body-parser\nnpm install @as-integrations/express\n\n要使用 TypeScript(推荐),请安装类型:
\n\nnpm install --save-dev typescript @types/node @types/express\n\n2. 快速入门——最小工作示例
\n\n让我们创建一个最简单的 GraphQL 服务器,它将向用户问好。创建一个文件 index.js 并添加以下代码:
import { ApolloServer } from '@apollo/server';\nimport { startStandaloneServer } from '@apollo/server/standalone';\n\n// 1. 定义模式 (typeDefs)\nconst typeDefs = `#graphql\n type Query {\n hello: String\n }\n`;\n\n// 2. 定义解析器\nconst resolvers = {\n Query: {\n hello: () => '你好,世界!这是 Apollo Server!',\n },\n};\n\n// 3. 创建服务器实例\nconst server = new ApolloServer({\n typeDefs,\n resolvers,\n});\n\n// 4. 启动服务器\nconst { url } = await startStandaloneServer(server, {\n listen: { port: 4000 },\n});\n\nconsole.log(`🚀 服务器已启动,地址为:${url}`);\n\n\n使用命令 node index.js 启动服务器(如果使用 ES 模块,请在 package.json 中添加 "type": "module")。打开浏览器并导航到 http://localhost:4000。您将看到 Apollo Sandbox 界面,您可以在其中执行查询:
query {\n hello\n}\n\n响应应为:{ "data": { "hello": "你好,世界!这是 Apollo Server!" } }。恭喜,您的第一个 GraphQL 服务器正在运行!
3. 主要方法/函数/类
\n\n让我们看看 Apollo Server 的关键元素。对于每个元素,我们将提供签名、简要描述和示例。
\n\n