FAQ:入门
FAQ:入门
我为什么要使用 GraphQL?
这取决于你的用例,但总的来说,GraphQL 有几个突出的关键特性。例如,GraphQL 让你可以:
- 聚合来自多个 UI 组件的数据。
- 创建一种熟悉且自然的数据表示方式(一张图)。
- 确保所有数据都是静态类型的,并且这些类型会说明schema 支持哪些查询。
- 减少破坏性变更的需求,同时在需要时利用内建的弃用机制。
- 使用包含 GUI、编辑器集成、代码生成、lint 检查、分析等的强大工具生态。
我们的主页还列出了更多使用 GraphQL 的理由。
你无需重写整个应用就可以试用 GraphQL。例如,可以从一个包装现有 REST 调用的 HTTP 请求开始。你的 GraphQL schema 和业务领域模型都可以逐步扩展。我们建议先专注于一个用例,只构建该用例所需的 schema 部分。
GraphQL 会取代 REST 吗?
不会,至少不一定会。它们都能处理 API,并且从业务角度看可以服务于类似的目的。GraphQL 通常被视为 REST 的替代方案,但它并不是决定性的替代品。
GraphQL 和 REST 实际上可以在你的技术栈中共存。例如,你可以将 REST API 抽象到 GraphQL 服务器之后。具体做法是使用根解析器(root resolvers)将 REST 端点封装为 GraphQL 端点。
关于 GraphQL 与 REST 的对比,可以查看 How To GraphQL 中更具观点的阐述。
GraphQL 是像 SQL 一样的数据库语言吗?
不是,但这是一个常见的误解。
GraphQL 是一种通常用于远程客户端-服务器通信的规范。与 SQL 不同,GraphQL 与用于检索数据和持久化更改的数据源无关。访问和操作数据是通过称为解析器(resolvers)的任意函数完成的。GraphQL 会协调并聚合这些解析器函数返回的数据,然后将结果返回给客户端。通常,这些解析器函数应委托给业务逻辑层,由该层负责与各种底层数据源通信。这些数据源可以是远程 API、数据库、本地缓存,以及你的编程语言几乎能访问到的任何内容。
关于如何让 GraphQL 与数据库交互的更多信息,请参阅我们的解析器文档。
我如何学习 GraphQL?
有很多资源可以帮助你学习 GraphQL,包括这个网站。在我们的文档中,你会看到一系列介绍 GraphQL 基本概念及其工作原理的文章。我们的社区页面提供了大量可供参考的资源,以及可加入的社区。
如需更实用的指南,请访问 How to GraphQL 全栈教程网站。我们还与 edX 合作提供免费在线课程:Exploring GraphQL: A Query Language for APIs。
在开始学习之前,请确保你了解什么是 API,以及客户端与服务器之间通常如何进行通信。
GraphQL 只适用于 React 或 JavaScript 开发者吗?
不,完全不是。GraphQL 是一种规范,可以用任何语言实现。我们的 Code 页面列出了许多编程语言的库,可以帮助你实现 GraphQL。
不过,你会这么想也可以理解。GraphQL 是在 React 大会上推出的,GraphQL.js 也是迄今为止使用最广泛的实现之一。我们知道这可能会造成困惑,因此我们正在努力改进文档,并添加更多非 JavaScript 编写的代码示例。
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
