如何使用 GraphQL 进行真正意义上的数据库编程

阅读时长 6 分钟读完

GraphQL 是一种用于 API 的查询语言和运行时环境。它旨在提高API的效率、最小化客户端与服务器之间的通信量,并使数据的获取变得更加灵活。这种技术在前端领域已经越来越流行,让我们深入了解如何使用 GraphQL 进行真正意义上的数据库编程。

GraphQL 的基本原理

GraphQL 的思想就是让客户端决定需要什么,而非服务端强制推送什么。GraphQL 的请求直接向数据的根对象查询到需要的字段和数据。这使得客户端能够更好地利用数据,真正做到按需获取数据。

GraphQL 的查询语言采用的是以字段为基础的查询方式,它不同于传统的 REST API 的资源为基础的查询方式。GraphQL 客户端可以同时请求多个资源,也可以指定获取资源的特定部分。这些资源和其特定的字段是由服务器来确定的。

GraphQL 的实例包含了结构、操作、以及返回类型(Schema)。结构决定了可以从服务端查询那些字段; 操作决定了可以进行哪些查询、字段都有哪些参数以及该操作的返回类型; 返回类型描述了可以返回的任何一种数据(scalar、枚举类型、对象类型等等)。

GraphQL 的服务将 Schema 渲染成类型安全的 API,这意味着客户端只能够访问服务端定义的操作和字段。

GraphQL 的优点

GraphQL 相比传统的 REST API,有如下的一些优点:

  • 客户端能够按需查询数据。
  • 数据获取变得更加高效,单一请求可以获取多个资源的数据。
  • 自动的 API schema 生成,方便前后端团队沟通和开发。
  • 前端程序员不需要一直迭代 API,只要后端开发和修改好后,无需对前端产生更多的干扰。

GraphQL 的示例代码

接下来我们将展示一个 GraphQL 的示例代码,其中我们通过 GraphQL 来查询一个电子商务网站中的商品。

在采用 GraphQL 开发中,我们需要一个 Server,可以使用 Node.js 来搭建一个基本的服务器。先安装 graphql 和 express 库:

在服务器端,我们要先定义 Schema,它包含了所有可查询的类型以及可执行查询操作

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

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

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

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

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

定义完 Schema 后,我们还需要定一些 Resolver,Resolver 是给每个字段匹配提供数据的函数

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

最后我们要把这些类型和 Resolver 定义传给 applyMiddleware 方法,构造一个 GraphQL API

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

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

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

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

然后我们就可以使用 GraphQL 客户端来请求我们定义的 API,比如下面的例子中,我们要查找名字为 "iPhone" 的商品

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

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

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

结论

通过这篇文章,我们已经了解了 GraphQL 的优点以及如何使用 GraphQL 来进行真正意义上的数据库编程。使用 GraphQL 已经成为前端开发的一个趋势,希望这篇文章可以对你有所帮助!

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

纠错
反馈