在开发 Web 应用时,我们需要对用户输入的请求参数进行校验和过滤,以保证数据的安全和有效性。Express.js 是一个流行的 Node.js Web 框架,它提供了一套功能强大而灵活的路由系统,同时也支持参数校验和过滤。本文将介绍如何使用 Express.js 实现请求参数的校验和过滤。
Express.js 的参数校验和过滤中间件
Express.js 提供了一系列中间件,可以方便地对请求参数进行校验和过滤,其中比较常用的是 body-parser 和 express-validator。
body-parser
body-parser 是一个 Express.js 的中间件,用于解析请求体中的参数。它支持不同类型的请求体,例如 urlencoded、json、text 和 raw。我们可以使用 body-parser 对请求体中的参数进行解析和过滤,示例代码如下:
const express = require('express') const bodyParser = require('body-parser') const app = express() app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: true }))
上面的代码中,我们首先引入了 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()
方法定义了三个校验规则,分别检查 name
、email
和 password
字段是否满足条件。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