npm 包 graphql-compose-rest 使用教程

阅读时长 7 分钟读完

在前端开发中,经常需要处理 Restful API 的请求和响应。而同时,GraphQL 也逐渐为人所知。这时候,如果我们可以把 GraphQL 和 Restful API 结合起来,会给我们的开发带来很大的便捷。那么,如何实现这一目标呢?今天,我们来介绍一款可以帮助我们实现这一目标的 npm 包:graphql-compose-rest。

什么是 graphql-compose-rest

graphql-compose-rest 是一个 npm 包,该包使用了 compose 的概念。该包可以帮助我们将 Restful API 映射成 GraphQL 的 schema,并且能够自动生成基于 REST 的查询和变异。

如何使用

安装

安装命令如下:

初始化 schema

我们需要使用 graphql-compose 来初始化我们的 GraphQL schema。我们可以使用如下方式创建 schema 文件:

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

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

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

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

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

在该示例代码中,我们定义了 UserTC 的 GraphQL schema,并定义了 UserTC 的查询解析器,该解析器将调用 REST API 来获取数据。并且,我们使用了 formatResponse 方法和 responseDataParser 方法来解析查询结果,使得我们可以获取我们需要的字段,并且将结果映射成 GraphQL 的类型。

初始化 Restful API resolvers

在初始化 schema 后,我们需要定义 Resful API 的解析器。可以使用如下代码:

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

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

在上述代码中定义了两个请求,查询 getUserById 和变异 createUser,该请求将调用 REST API。在这里,我们也使用了 node-fetch 来处理查询和变异的请求,并且定义了 REST API 的 headers。

启动 GraphQL 服务

最后,我们需要启动 GraphQL 服务。我们可以使用如下代码:

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

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

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

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

在上述代码中,我们使用 express 搭建了一个服务,并且将我们的 GraphQL schema 和 resolvers 绑定到了该服务上。最后,我们可以在浏览器上访问 http://localhost:4000/graphql 来查看 GraphQL 的 Playground。

结论

graphql-compose-rest 是一个强大的 npm 包,使用它可以帮助我们将 Restful API 嵌入到 GraphQL 中。通过本文所述的方法,我们可以轻松地自动生成简单但强大的 API。如果你有一些经验,那么你可以根据自己的喜好和需求定制该 API,并且通过该 API 更快地开发出可扩展和易维护的应用程序。

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

纠错
反馈