解析 GraphQL Middleware:函数架构

阅读时长 8 分钟读完

GraphQL Middleware 是广泛用于 Node.js 应用程序中的模块,其作用是拦截来自 GraphQL 客户端的请求并对其进行处理。 Middleware 可以在请求到达 GraphQL 服务器之前,对请求进行修改,也可以在其返回客户端之前对其进行处理和转换。 GraphQL Middleware 可以通过增强 GraphQL 的功能,为提高程序性能、安全性和代码可维护性提供了良好的支持。

在本文中,我们将重点介绍 GraphQL Middleware 构造,阐述如何使用它来定义强大且灵活的函数架构。我们将进行深入研究,并描述了其学习和指导意义。同时还将涵盖一些示例代码,以便您更加深入地了解 GraphQL Middleware 函数架构的使用方式。

函数架构概述

函数架构是指将中间件组合在一起的方式,从而创建功能强大、容易维护的 GraphQL API。 GraphQL Middleware 可以用于许多不同的中间件逻辑,例如身份验证、授权、请求日志记录等。这种架构可以让开发人员更容易地调试和扩展应用程序。它还可以使您的应用程序变得更加模块化,因为您可以轻松地添加和删除中间件,而不必担心影响应用程序的其他部分。

GraphQL Middleware 构造允许您将不同的中间件组合在一起,然后将其应用于请求。这种方法提供了多种方式来处理请求,包括异步和同步方式。其中一个核心概念是使用 next 参数来调用下一个中间件,从而使请求继续到下一个阶段。中间件函数的编写顺序非常重要,因为它们按顺序运行。

Middleware 函数示例

以下是一个使用 GraphQL Middleware 构造的示例。该示例使用了三个中间件。第一个中间件会在请求到达时记录请求的时间,第二个中间件会检查请求是否包含有效的用户令牌和权限,第三个中间件会将请求转发到 GraphQL 服务器。

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

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

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

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

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

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

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

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

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

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

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

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

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

神盾中间件

GraphQL Shield 是一个非常强大的 GraphQL Middleware 库,它提供了一套丰富的中间件和函数来实现身份验证和授权逻辑。我们已经在上面的示例中使用了一个称为 isAuthenticated 的 Shield 规则,这是一个只允许已经通过身份验证的用户访问的规则。以下是一个更详细的实现,它使用 GraphQL Shield 库创建了一组适用于用户类型和查询的规则:

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

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

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

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

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

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

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

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

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

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

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

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

结论

在本文中,我们深入探讨了 GraphQL Middleware 的构造和函数架构,以及如何使用它们来创建功能强大和灵活的 GraphQL API。我们还介绍了一个重要的 GraphQL Middleware 库-GraphQL Shield,并提供了使用它的示例代码。对于希望学习和使用 GraphQL Middleware 的开发人员来说,这篇文章应该是非常有参考价值的。通过该文章,我们可以更好地了解如何创建强大、安全和可维护的 GraphQL API。

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

纠错
反馈