如何使用 Express.js 实现请求参数的校验和过滤

阅读时长 6 分钟读完

在开发 Web 应用时,我们需要对用户输入的请求参数进行校验和过滤,以保证数据的安全和有效性。Express.js 是一个流行的 Node.js Web 框架,它提供了一套功能强大而灵活的路由系统,同时也支持参数校验和过滤。本文将介绍如何使用 Express.js 实现请求参数的校验和过滤。

Express.js 的参数校验和过滤中间件

Express.js 提供了一系列中间件,可以方便地对请求参数进行校验和过滤,其中比较常用的是 body-parserexpress-validator

body-parser

body-parser 是一个 Express.js 的中间件,用于解析请求体中的参数。它支持不同类型的请求体,例如 urlencoded、json、text 和 raw。我们可以使用 body-parser 对请求体中的参数进行解析和过滤,示例代码如下:

上面的代码中,我们首先引入了 Express.js 和 body-parser,然后通过 app.use() 方法将其注册为中间件。body-parser.json() 方法用于解析请求体为 JSON 格式的参数,body-parser.urlencoded() 方法用于解析请求体为 urlencoded 格式的参数,{ extended: true } 表示启用扩展模式,支持解析嵌套的对象和数组。

express-validator

express-validator 是一个 Express.js 的中间件,用于对请求参数进行校验和过滤。它支持各种类型的校验规则和过滤器,例如必填、字符串长度、正则表达式和转换器等。我们可以使用 express-validator 对请求参数进行校验和过滤,示例代码如下:

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

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

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

上面的代码中,我们定义了一个 /user 路由,用于处理 POST 请求。在路由处理函数中,我们使用 body() 方法定义了三个校验规则,分别检查 nameemailpassword 字段是否满足条件。notEmpty() 表示字段不能为空,isLength() 表示字段长度必须在指定范围内,isEmail() 表示字段必须符合邮箱格式,matches() 表示字段必须符合给定的正则表达式。validationResult() 方法用于获取校验结果,如果有错误则返回 400 错误码和错误列表,否则执行正常的业务逻辑。

实战案例

下面是一个完整的使用 Express.js 实现请求参数校验和过滤的案例。它通过 userId 参数查询用户信息,如果成功则返回用户信息,否则返回错误信息。

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

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

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

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

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

在上面的代码中,我们定义了一个 /users/:userId 路由,用于处理 GET 请求。在路由处理函数中,我们使用 param() 方法定义了一个校验规则,检查 userId 参数是否为正整数。如果校验失败,则返回 400 错误码和错误列表。否则,我们将 userId 参数转换为数字,查询用户信息。如果找到用户,则返回用户信息,否则返回 404 错误码和错误信息。

结语

本文介绍了如何使用 Express.js 实现请求参数的校验和过滤。我们可以使用 body-parser 对请求体中的参数进行解析和过滤,使用 express-validator 对请求参数进行校验和过滤。在实际工作中,我们应该根据业务需求和安全性要求,合理地选择校验规则和过滤器,确保数据的完整性和安全性。

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

纠错
反馈

纠错反馈

程序员教程

精选优质教程,助你快速提升技术实力

程序员面试题库

海量优质面试题,助你轻松应对技术面试