把 REST 包装成 GraphQL

阅读时长 5 分钟读完

REST API 是构建现代应用程序的重要组件之一。然而,REST 也有一些限制,比如客户端必须发出多个请求才能获取完整的数据,这可能会导致性能问题。

GraphQL 是一种用于 API 的查询语言,它可以解决 REST API 的一些限制。在本文中,我们将学习如何使用 GraphQL 将现有的 REST API 封装起来,并提供更好的性能和可靠性。

GraphQL 是什么?

GraphQL 是一种由 Facebook 开发的查询语言。与 REST 不同,GraphQL 允许客户端定义自己需要的数据结构,从而减少了不必要的网络请求。GraphQL 还具有类型系统、强大的查询功能和实时数据传输等特点。

把 REST API 包装成 GraphQL

将现有的 REST API 封装为 GraphQL 可以使用任何支持 GraphQL 的服务器框架。在本例中,我们将使用 Node.js 和 Express。

步骤 1:安装依赖项

首先,我们需要安装 express-graphqlgraphql 两个包:

步骤 2:创建 schema

在 GraphQL 中,schema 定义了 API 中可用的类型和操作。我们需要根据我们的 REST API 创建一个 schema。以下是一个简单的示例:

在这个 schema 中,我们定义了一个 User 类型,它包含 idname 字段。我们还定义了一个查询操作 user,它接受一个 id 参数并返回一个 User 对象。

步骤 3:创建 resolver

resolver 是实现 GraphQL 操作的函数。在本例中,我们需要编写一个 resolver 来调用我们现有的 REST API。

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

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

----- --------- - -
  ------ -
    ----- ------------ - -- -- -
      ----- -------- - ----- --------------------------------
      ----- ---- - ----- ----------------
      ------ -----
    --
  --
--
展开代码

在这个 resolver 中,我们使用 node-fetch 包来调用我们的 REST API,并将响应转换为 JSON 格式。我们将此数据返回给客户端作为 GraphQL 响应。

步骤 4:创建 Express 应用程序

最后,我们需要创建一个 Express 应用程序来将 schema 和 resolver 结合起来。这里是一个简单的示例:

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

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

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

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

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

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

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

---------------- -- -- ------------------- ------- -- ---- --------
展开代码

在这个应用程序中,我们使用 makeExecutableSchema 函数将我们的 schema 和 resolver 结合起来,并创建一个 GraphQL API。我们还使用 graphqlHTTP 中间件来处理请求和响应。

步骤 5:测试 API

现在我们已经完成了 GraphQL API 的创建,可以使用 GraphiQL 工具来测试它。只需在浏览器中打开 http://localhost:3000/graphql 并开始编写查询即可。

以下是一个简单的示例查询:

纠错
反馈

纠错反馈