建立一个独具特色的 GraphQL API

GraphQL 是一种新型的 API 查询语言,它允许客户端准确地说明需要哪些数据,而不是像 REST API 那样返回整个数据集。GraphQL 还可以组合多个数据源,使其成为一种理想的 API 解决方案。本文将介绍如何创建一个独具特色的 GraphQL API。

什么是 GraphQL?

GraphQL 由 Facebook 在 2012 年开发,于 2015 年首次开源,现在已经成为最受欢迎和使用最广泛的 API 查询语言之一。与 REST API 相比,GraphQL 具有以下优势:

  • 精确查询:客户端可以直接向服务器请求所需的数据,无需传输整个数据集。
  • 单一查询点:与 REST API 不同,GraphQL 仅需要发送一个请求。
  • 高度可组合:GraphQL 允许您从不同的数据源(如数据库、文件系统)中组合数据。

如何建立一个独具特色的 GraphQL API?

步骤 1:定义模式

GraphQL API 的核心是定义模式(Schema)。模式确定了可以查询哪些字段以及这些字段的返回类型。模式可以在内存中定义,也可以通过将模式定义保存在单独的文件中,并将其与代码进行分离来实现。

例如,在本示例中,我们将创建一个用于查询歌曲的 GraphQL API。下面是用于定义歌曲的模式的代码示例:

---- ---- -
  --- ---
  ------ -------
  ------- -------
  ------ -------
  --------- ----
-

---- ----- -
  ------ --------
  -------- ----- -----
-

上述代码中,Song 类型定义了歌曲对象的字段,Query 类型定义了可查询的歌曲集合。

步骤 2:实现解析器

GraphQL API 的另一个核心组件是解析器(Resolver)。解析器负责处理客户端查询请求,并从数据源中检索必要的数据。每个字段都需要一个解析器。解析器可以是同步的也可以是异步的。

例如,下面是用于实现查询所有歌曲和查询单个歌曲的解析器示例:

----- ----- - -
  - --- ---- ------ -------- ------- -------- ------ ----- --------- --- --
  - --- ---- ------ ------ -- ----- ------- --- --------- ------ ---- --------- --- --
  - --- ---- ------ ---- --- ------- ------- ---- --------- ------ -------- --- --------- --- -
--

----- --------- - -
  ------ -
    ------ -- -- ------
    ----- --- - -- -- -- --------------- -- ------- --- ----
  --
--

上述代码中,我们定义了一个歌曲的数组 songs,并实现了查询所有歌曲和查询单个歌曲的解析器。

步骤 3:创建服务器

现在我们已经定义了模式和解析器,我们需要将其与服务器集成。实现服务器的最好方法是使用 Apollo Server,它是一个针对 GraphQL 的 Node.js 中间件。

以下是使用 Apollo Server 实现服务器的示例代码:

----- - ------------- --- - - -------------------------

----- -------- - ----
  ---- ---- -
    --- ---
    ------ -------
    ------- -------
    ------ -------
    --------- ----
  -

  ---- ----- -
    ------ --------
    -------- ----- -----
  -
--

----- ----- - -
  - --- ---- ------ -------- ------- -------- ------ ----- --------- --- --
  - --- ---- ------ ------ -- ----- ------- --- --------- ------ ---- --------- --- --
  - --- ---- ------ ---- --- ------- ------- ---- --------- ------ -------- --- --------- --- -
--

----- --------- - -
  ------ -
    ------ -- -- ------
    ----- --- - -- -- -- --------------- -- ------- --- ----
  --
--

----- ------ - --- -------------- --------- --------- ---

----------------------- --- -- -- -
  --------------- ------ ----- -- ---------
---

上述代码中,我们首先定义了类型定义(typeDefs),其次定义了歌曲数组和解析器,最后使用 Apollo Server 创建新的服务器。

步骤 4:测试 API

现在我们已经完成了 API 的实现和部署,我们可以使用 GraphQL Playground 在浏览器中测试 API。在地址栏中输入 http://localhost:4000/ 即可打开 GraphQL Playground。在 Query 标签中输入以下查询:

-
  ----- -
    -----
    ------
    -----
    --------
  -
-

此查询将返回歌曲数组中所有歌曲的 titleartistalbumduration 字段。

我们还可以通过 song 查询单个歌曲:

-
  -------- ---- -
    -----
    ------
    -----
    --------
  -
-

此查询将返回 id 为 1 的歌曲的 titleartistalbumduration 字段。

结论

GraphQL 是一种强大的 API 解决方案,可以精确地查询所需的数据,并从多个数据源获取数据。本文介绍了如何创建一个独具特色的 GraphQL API,包括定义模式、实现解析器、创建服务器和测试 API。我们希望本文能够帮助您开始使用 GraphQL 构建自己的 API。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/671cc1609babaf620fb25201