知海

FAQ:入门

graphql-github-io-zh-Hans常见问题

FAQ:入门

我为什么要使用 GraphQL?

这取决于你的用例,但总的来说,GraphQL 有几个突出的关键特性。例如,GraphQL 让你可以:

我们的主页还列出了更多使用 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 编写的代码示例。

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。