GraphQL 是一个新兴的 API 查询语言,它提供了一种高效、强类型、可扩展的方式来描述数据,并且适用于各种不同类型的客户端端点。GraphQL 是由 Facebook 开发的,它在近年来逐渐成为许多公司的首选API 版本选择。
在前端开发中,使用 GraphQL 库来处理 API 是一个不错的选择。许多现有的 GraphQL 库以及查询解析器可供使用,但有时候您可能需要开发自己的 GraphQL 库才能满足您特有的需求。在本文中,我们将深入探讨如何开发自己的 GraphQL 库,同时介绍 GraphQL 概念的基础知识。
GraphQL 基础知识
在开始开发自己的 GraphQL 库之前,我们需要了解 GraphQL 的一些基本概念:
Schema
GraphQL 的 Schema 是定义模型和数据的基础。它描述了 API 的类型和关系,并定义了客户端可以查询的字段。Schema 是一个纯粹的文本文件,它可以在应用程序中以字符串形式使用。
Query
Query 定义了客户端可以检索的数据,它与 Schema 建立关系,可以查询单个、多个或者所有字段信息。
Mutation
Mutation 是 GraphQL 对数据进行 CRUD 操作的方式。客户端可以通过 Mutation 操作执行增删改查操作,以修改 Schema 中定义的数据。
Resolver
Resolver 是数据提供程序,它提供了连接 API 数据的功能。Resolver 解决了客户端查询的目标字段,并提供 API 端点数据作为响应。
Directives
Directives 是附加到字段上的标记,用于声明字段具有某些特定功能。@include 和@skip 是两个内置指令,它们用于筛选查询结果。
Example
下面是一个基本的 GraphQL 查询示例:
{ users { id name email } }
它查询了 users
字段下的 id
、name
和 email
的数据。如果定义了相应的 Resolver,那么 Resolver 就会查找并检索这些字段数据。当客户端发出这个请求时,服务器返回与请求匹配的数据。
开始开发自己的 GraphQL 库
1. 准备工作
开发自己的 GraphQL 库需要清楚地了解 GraphQL 的基本概念并具备一定的 Node.js 开发经验。如果您还不熟悉 Node.js,建议先学习 Node.js 基础知识。
在本文中,我们将使用 Node.js 中的 express 框架来搭建 GraphQL 服务器,同时使用 graphql.js(GraphQL.js 的 JavaScript 实现)作为查询解析器。
首先,安装相关的库:
npm install express express-graphql graphql
在你的项目根目录下,新建一个 index.js 文件,输入以下内容:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- ------ - -------------------- ----- --- - ---------- ------------------- ------------- ------- ------- ---------- ----- --------- ----- ---- ---------------- -- -- ------------------- ------- -- ---- --------
这个服务器将在 4000 端口上监听请求,同时使用 GraphQL 中间件处理 /graphql
路径的请求。
2. 定义 Schema
在上一个步骤的代码中,我们需要引入 Schema。GraphQL Schema 需要被定义成字符串格式。我们将 Schema 定义到单独的文件中。在根目录下新建一个 schema.js 文件。输入以下代码:
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ----- ------ - --- -------------- - -------
3. 定义 Resolver
我们需要定义一个名为 root 的 Resolver,将 Query 的 name 字段链接到数据源。在 schema.js 文件中增加以下内容:
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ----- ------ - --- ----- ---- - - ----- -- -- ----- ----- -- -------------- - - ------- ---- --
在这里,我们定义了一个返回固定字符串“John Doe”的 name Resolver。当运行 GraphQL 服务器并发出查询请求时,这个 Resolver 将查询字段和返回值连接在一起。
4. 查询服务器
现在,我们已经设置了一个 GraphQL 服务器,现在我们需要通过发送一些查询来测试它。使用 GraphiQL 来测试即可。打开您的Web浏览器并访问 http://localhost:4000/graphql。您会看到一个 GraphiQL 编辑器。
在编译器中输入以下内容:
{ name }
单击运行按钮。您将看到以下结果:
{ "data": { "name": "John Doe" } }
现在我们可以看到,查询服务器已经工作了。
结论
在本文中,我们深入探讨了 GraphQL 的基本概念以及如何创建自己的 GraphQL 库。GraphQL 库可以为实际应用程序提供大量的便利性,并且也可以深入了解 API 查询语言的工作原理。希望这篇文章对您来说有指导意义,同时也希望您能够更深地了解并使用 GraphQL。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677237356d66e0f9aad5caa7