如何在 Headless CMS 中使用 GraphQL 来查询数据

Headless CMS 是一种无前端设计的 CMS,它只关心数据的存储和管理,由于没有自己的前端,它可以从多个渠道获取数据,其中包括了 GraphQL。GraphQL 是一种用于 API 的查询语言,它可以提高数据的获取效率,可读性和可维护性。在这篇文章中,我们将学习如何在 Headless CMS 中通过 GraphQL 查询数据。

前置知识

在阅读本文之前,你需要具备以下的知识:

  • 已经熟悉了基本的 GraphQL 查询语句
  • 能够创建和使用 Headless CMS
  • 有足够的编程经验,能够理解和编写简单的 GraphQL 查询和 JavaScript 代码

Headless CMS 和 GraphQL

Headless CMS 基本上是一个 RESTful API,它提供了各种 RESTful 风格的接口来让终端用户进行数据的增删改查操作,在这个过程中,GraphQL 可以很好的应用在查询操作中。以下是 Headless CMS 和 GraphQL 技术的相互关联:

  1. 创建 GraphQL 服务 要使用 GraphQL 查询 Headless CMS 的数据,首先需要配置一个 GraphQL 服务,然后使用相关的库连接到 Headless CMS,这样就可以使用 GraphQL 来访问数据。GraphQL 服务中通常包括以下几个要素:
  • schema: it defines the types of data that the GraphQL API can retrieve.
  • resolvers: they are the code that is responsible for fetching the data and returning it to the client.

以下是一个简单的 GraphQL 服务配置:

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

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

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

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

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

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

以上 GraphQL 服务中定义了一个类型为 Page 的数据类型,这个类型有 id, title 和 description 三个字段,其中 id 字段是必填字段。同时,定义了查询接口 Query,其中有一个参数 id,可以在外部使用。以上 GraphQL 服务创建的过程需要参照实际的 Headless CMS 数据模型来进行。

  1. 查询 Headless CMS 数据

使用 GraphQL 获取 Headless CMS 的数据其实和使用 RESTful API 差不多,主要的区别在于查询参数的格式和使用方法。以下是一个简单的 GraphQL 查询:

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

以上查询语句的意思是查询 id 为 1 的 Page,返回 title 和 description 字段。GraphQL 服务通过 resolvers 来解释以上查询,并从 Headless CMS 中取回数据。

  1. 处理 Headless CMS 的返回值

在使用 GraphQL 查询 Headless CMS 数据时,我们最终需要处理 Headless CMS 返回的数据,以下是一个简单的 JavaScript 函数用于处理 GraphQL 返回数据:

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

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

以上函数从 GraphQL 所返回的数据中,获取了 Page 的 title 和 description 字段,并将值展示在页面中。

示例代码

这里提供了一个 Headless CMS 和 GraphQL 的示例代码:

  1. 在 GraphCMS 中创建数据模型:

图一:

  1. 在 GraphCMS 中插入数据:

图二:

  1. 创建 GraphQL 服务:
----- - ------------- --- - - -------------------------
----- ----- - ----------------------

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

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

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

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

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

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

----------------------- --- -- -- -
  --------------- ------ ----- -- ---------
---
  1. 在 JavaScript 中使用 GraphQL:
------ - ---- ------------- ------------- - ---- -----------------

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

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

以上代码演示了如何在 JavaScript 中使用 gql,ApolloClient 和 InMemoryCache 来查询 GraphCMS 中的数据。

结论

在本文中,我们讨论了 Headless CMS 和 GraphQL 的关系,介绍了如何创建 GraphQL API,并使用 GraphQL 查询来获取 Headless CMS 的数据。通过本文的学习,你应该已经理解了 GraphQL 的基本使用方法,并且应该已经有了一个相对完整的工作流程,可以帮助你更好的使用 Headless CMS 和 GraphQL。

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