npm 包 @nicolasparada/graphql-middleware 使用教程

阅读时长 6 分钟读完

GraphQL 是近年来备受前端开发者热爱的一种 API 开发模式,它可以提供更精准的数据返回,便于客户端处理。在使用 GraphQL 的过程中,我们需要写很多中间件处理数据和逻辑,而这时候就需要使用一个优秀的 npm 包来简化工作流程。本文将介绍如何使用 npm 包 @nicolasparada/graphql-middleware,帮助您更好地开发 GraphQL API。

安装

在使用 @nicolasparada/graphql-middleware 需要先安装该包,可以使用 npm 命令进行安装:

使用

在使用 @nicolasparada/graphql-middleware 之前,我们需要先了解一下 GraphQL 的请求与响应过程。GraphQL 服务端会先接到客户端的请求,然后利用 resolvers 处理请求,最终返回给客户端。在这个过程中,我们需要编写很多的中间件处理对应的请求,比如鉴权等等。这就是 @nicolasparada/graphql-middleware 的用处。

1. 在函数式 resolvers 中使用

首先,我们需要在 resolvers 里面添加一个前置中间件。这可以通过 createMiddleware 类方法实现:

上面的中间件是一个用于在每个解析后单独 console.log 的示例。现在我们已经创建好我们的 middleware,下一步是将其添加到我们的 resolvers 中。这可以通过 mergeMiddleware 函数实现:

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

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

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

在上述代码中,我们通过 mergeMiddleware 将我们的 logMidware 绑定到 hello 查询上,这样每次执行查询都会输出一些请求相关的日志数据。

到目前为止,只有一个简单的中间件。在实际中,中间件可以是复杂的流程,例如用户鉴权和批量查询等等。

2. 在 Apollo Server 中使用

express-graphql 是一个可以帮助我们快速创建并使用 GraphQL 服务的 npm 包,它支持使用解析函数来处理客户端请求。这使得我们可以使用 GraphQL 服务的完全功能,同时可以指定在解析函数执行时调用的特定中间件。

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

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

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

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

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

在上述代码中,我们通过 graphql-middleware 中的实用函数 applyMiddleware() 对所有 resolvers 应用中间件。这将代替 Vanilla GraphQL 解析函数,使我们在查询时能够看到中间件执行的结果。

3. 扩展功能

为了扩展功能,您可以使用 createModelmergeModels 来集中管理功能。这些函数使我们能够更深入地访问中间件、无状态解决方案和其他更复杂的逻辑。

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

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

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

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

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

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

在上述代码中,我们使用 createModel 函数创建一个带有两个中间件的模型。第一个中间件是一个简单的字符串解析器,用于解析完整名称并将其拆分为名和姓。第二个中间件作为最终的解析器解析返回的名和姓。

总结

@nicolasparada/graphql-middleware 是一个非常优秀的 npm 包,可以很好的帮助我们处理 GraphQL 开发中的中间件问题。通过实际的示例代码,相信您对该包的使用方式已经有了深刻的了解。当您需要对 GraphQL 服务的逻辑进行处理时,请不要犹豫使用该包。

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

纠错
反馈