解析 GraphQL 库:如何开发自己的 GraphQL 库

阅读时长 5 分钟读完

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 字段下的 idnameemail 的数据。如果定义了相应的 Resolver,那么 Resolver 就会查找并检索这些字段数据。当客户端发出这个请求时,服务器返回与请求匹配的数据。

开始开发自己的 GraphQL 库

1. 准备工作

开发自己的 GraphQL 库需要清楚地了解 GraphQL 的基本概念并具备一定的 Node.js 开发经验。如果您还不熟悉 Node.js,建议先学习 Node.js 基础知识。

在本文中,我们将使用 Node.js 中的 express 框架来搭建 GraphQL 服务器,同时使用 graphql.js(GraphQL.js 的 JavaScript 实现)作为查询解析器。

首先,安装相关的库:

在你的项目根目录下,新建一个 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 编辑器。

在编译器中输入以下内容:

单击运行按钮。您将看到以下结果:

现在我们可以看到,查询服务器已经工作了。

结论

在本文中,我们深入探讨了 GraphQL 的基本概念以及如何创建自己的 GraphQL 库。GraphQL 库可以为实际应用程序提供大量的便利性,并且也可以深入了解 API 查询语言的工作原理。希望这篇文章对您来说有指导意义,同时也希望您能够更深地了解并使用 GraphQL。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677237356d66e0f9aad5caa7

纠错
反馈