GraphQL 教程:从 RESTful 转换到 GraphQL

RESTful API 一直是前端开发人员的基本选择,但它也有许多不足之处,如响应包含太多或太少的数据、需要发出多个请求以获取完整数据、需要进行版本控制等。GraphQL 是一种用于查询数据的 Web API 语言,它可以减少这些限制。在本教程中,我们将介绍 GraphQL 并展示如何将 RESTful API 迁移到 GraphQL。

什么是 GraphQL?

GraphQL 是一个用于查询 API 的数据查询语言,由 Facebook 在 2012 年开发,并于 2015 年开源。它旨在解决 RESTful API 的一些问题,比如过多或过少的数据、多次轮询以获取完整的信息、不必要的响应数据和 URL 版本控制。此外,GraphQL 还提供了一个易于理解的数据图形化接口,以便查询和响应的数据类型和结构更好地匹配。

GraphQL 与 RESTful API 的区别

虽然 RESTful API 和 GraphQL 均可查询和获取数据,但它们的开发方式以及数据的传递方式存在区别:

  • RESTful API 基于 HTTP 协议的 CRUD 模式,并且响应数据的结构是固定的。GraphQL 通过一个单一接口提供了更多的查询和过滤选择,并且给出了一种可根据需要动态生成响应结构的方法。
  • RESTful API 难以减少或增加和限制或选拔的数据模型。GraphQL 中使用了一个结构化数据类型系统,该系统可以帮助开发人员更好地定义和过滤数据,将从客户端请求的所有数据作为响应发送。
  • RESTful API 是通过 URL 传递参数和数据请求的。相比之下,GraphQL 通过查询和变量语句以高度灵活的方式进行数据传递。

GraphQL 对前端开发人员的益处

GraphQL 有许多优势,特别是对前端开发人员来说,其中包括:

  • 更少的轮询请求:使用 RESTful API,多个请求可能被用于获取相同数据,但使用 GraphQL,仅一个请求即可提供完整数据。
  • 传递更少的数据:GraphQL 中的请求和响应仅包含用于您需要的数据。
  • 客户端控制:GraphQL 允许客户端代码自己编写和控制查询,并自定义筛选、排序、分页和其他选项。
  • 易扩展性:当您需要新增数据或更改数据架构时,仅需在服务端进行更改即可,GraphQL 对客户端基本无影响。
  • 类型安全:GraphQL 通过类型定义机制保证传递的数据是符合规定的。

将 RESTful API 迁移到 GraphQL

对于已有的 RESTful API,需要花费一些时间将其迁移到 GraphQL。以下是一些基本步骤。

构建类型定义

首先,我们需要定义查询的类型,包括查询、变量以及返回的数据结构。

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

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

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

编写查询和解析函数

接下来,我们需编写查询和解析函数。

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

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

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

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

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

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

编写解析函数

接下来,我们需编写解析函数。

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

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

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

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

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

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

结论

GraphQL 比 RESTful API 更灵活和可维护,并且可更好地满足应用程序的需求。在上述例子中,我们展示了将 RESTful API 迁移到 GraphQL 的基本步骤,但有许多其他功能可让 GraphQL 更加强大。希望此教程有助于您理解 GraphQL 并将其应用于前端开发中。

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