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

阅读时长 5 分钟读完

什么是 @nicolasparada/graphql-middlewares?

@nicolasparada/graphql-middlewares 是一个基于 GraphQL 查询和响应的中间件集合,支持 Apollo Server 和 Express server。

为什么要使用中间件?

在 GraphQL 查询和响应的过程中,我们可能需要一些额外的处理和操作,例如:

  • 对查询进行权限控制
  • 添加日志
  • 对返回结果进行格式化
  • 等等

将这些操作直接写在查询和响应的代码中,会导致代码可读性和可维护性变差。而使用中间件,可以很好地解决这些问题。

如何使用 @nicolasparada/graphql-middlewares?

1. 安装

在命令行中执行以下命令进行安装:

2. 引入中间件

首先,我们需要定义一些中间件,例如:

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

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

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

在上面的例子中,我们定义了两个中间件,一个是用于输出查询名称的日志中间件,另一个是用于权限控制的中间件。

3. 应用中间件

将中间件应用到 GraphQL Schema 中,例如:

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

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

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

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

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

在上面的例子中,我们将应用了两个中间件的 server 传入 applyMiddleware 函数中,即可完成中间件的应用。

总结

使用 @nicolasparada/graphql-middlewares,可以很方便地编写和应用 GraphQL 的中间件,提高代码的可读性和可维护性。

当然,在实际项目中,可能需要编写更复杂和个性化的中间件,这需要我们根据实际情况进行深入学习和掌握,以更好地应对项目需求。

示例代码

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

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

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

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

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

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

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

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

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

纠错
反馈

纠错反馈