npm 包 fooll-beforeaction 使用教程

阅读时长 10 分钟读完

简介

fooll-beforeaction 是一个基于 Express 的中间件,它可以让你在执行路由操作之前进行某些操作。这些操作包括验证用户登录状态,处理请求参数等。

安装

使用 npm 安装:

使用指南

引入

首先,你需要将 fooll-beforeaction 引入你的项目中:

配置

然后,你需要配置 beforeAction。下面是一个例子:

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

这个例子定义了两个 handler。第一个 handler 用于验证用户是否登录,它只在 /account 和 /settings 路径下执行。第二个 handler 用于设置请求参数,它只在 /api/* 路径下执行。在这个例子中,我们使用了一个名为 req.custom 的对象来存储请求参数。

下面是一个更复杂的例子:

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

在这个例子中,我们定义了三个 handler。第一个 handler 验证用户是否登录,并且在 /account/* 和 /settings/* 路径下执行。第二个 handler 验证用户是否具有管理员权限,并且在 /admin/* 路径下执行。第三个 handler 根据请求参数查询数据,并且只在 GET 请求和 /api/* 路径下执行。

另外,我们还定义了一个 onError 函数,用于处理错误。如果前一个 handler 抛出了错误,那么 onError 函数就会被调用。在这个例子中,我们简单地返回一个 JSON 对象,其中包含错误信息。

应用

最后,将 beforeAction 中间件应用到 Express 应用程序中:

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

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

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

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

-- ---------

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

示例代码

为了更好地理解 beforeAction,下面是一个实际的例子。

1. 获取用户信息

在这个例子中,我们要定义一个路由,用于获取当前用户的信息。用户必须已登录,并且具有 admin 权限。

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

为了符合我们的需求,我们可以使用 beforeAction 进行验证。

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

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

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

在这个例子中,我们定义了两个 handler,分别用于验证用户登录状态和管理员权限。如果验证失败,则会抛出一个包含错误信息的 Error 对象,beforeAction 会自动调用 onError 函数。否则,路由会正常进行,输出当前用户的信息。

2. 处理请求参数

在这个例子中,我们要定义一个路由,用于查询数据。请求参数为:

  • foo: 查询关键字
  • limit: 最大返回数量,默认为 10
-- -------------------- ---- -------
-------------------- ----- ---- ----- -- -
  ----- ----- - -
    ---- --------------
  --
  ----- ----- - ------------------------- --- -- ---
  ----------------------------------------- ----- -- -
    -- ----- -
      ----------
    - ---- -
      ---------------
    -
  ---
---

在这个例子中,我们可以使用 beforeAction 验证请求参数,并将查询结果存储在 req.custom 中。

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

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

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

在这个例子中,我们定义了一个 handler,用于设置请求参数。如果请求中没有 limit 参数,则默认为 10。我们通过 req.custom.limit 将 limit 存储在 req.custom 中,方便后续使用。

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

纠错
反馈