Express.js 中 Joi 验证的使用教程
在前端开发中,数据的验证是一个非常重要的部分。在 Node.js 平台中,Joi 是一个强大的验证库,它可以用来验证表单输入的数据、API 参数等等。
在本文中,我们将介绍在 Express.js 中如何使用 Joi 进行数据的验证。
安装 Joi
在使用 Joi 进行数据验证前,我们首先需要安装它。在终端中运行以下命令:
--- ------- ---
基本用法
假设我们有一个注册表单,其中包含了用户的姓名、邮箱和密码。我们需要对这些输入值进行验证。
----- --- - --------------- ----- ------ - ------------ ----- ------------ ------- ------------ ------ ------------ -------- ------------------ -- ----- - ------ ------- ------ - --- --------- ------------ ------------ ------------------------------- --- ----- ---- - - ----- ------- ------ ----------------- --------- ----------- -- --------------------- ----------- -- ----------------- ------------ -- ------------------
在上面的代码中,我们首先引入了 Joi 模块,然后定义了一个 schema 对象。在 schema 对象中,我们定义了三个属性,分别表示了 name、email 和 password。这些属性的验证规则使用了 Joi 中的方法。
在 data 对象中,我们定义了三个属性值。这些属性值需要与 schema 对象中的规则进行匹配。
最后,在调用 schema.validate()
方法时,会将数据对象传递给 Joi,Joi 将会对其进行验证。如果验证通过,则会输出包含所有属性值的对象。否则,将会返回错误信息。
高级用法
在实际开发中,我们往往需要更加复杂的验证规则。
----- --- - --------------- ----- ------ - ------------ --------- ------------ ----------- ------- -------- ------------ ---------- ------------ ---------- ---------- ----------- ------ ------------ --------- --------- ------------ ------------ ------------------------------- ---------------- -------------------- ------------- - ------------- ------------ -- --------------- ------------ ------------- -------- ------------------- ------------ ---------------- --------------- ----------------- ------------------- ----- ---- - - --------- --------- ---------- ----- ------ ------------------- --------- ----------- ---------------- ----------- ------------- ----------- --------------- ------ -- --------------------- ----------- -- ----------------- ------------ -- ------------------
在上面的代码中,我们定义了一个包含更复杂验证规则的 schema 对象。在这个 schema 对象中,我们使用了更多的 Joi 验证方法,比如 .alphanum()
、.min()
、.max()
、.integer()
、.valid()
、.with()
、.xor()
等等。这些方法可以将好多不同的验证规则组合在一起。
Joi 还包含了其它的一些验证方法,比如 .when()
、.forbidden()
、.strip()
等等。
实例:使用 Joi 验证 API 参数
接下来,我们将使用 Joi 验证 Express.js 中的一个 GET API 的参数。
----- ------- - ------------------- ----- --- - --------------- ----- --- - ---------- ------------------ ----- ---- -- - ----- ------ - ------------ -- ------------------------ ------ --------------------------------------- --- ----- - ------ ----- - - --------------------------- -- ------- - ------ ----------------------------------------------- - ----- - -- ----- - -- - - ------ ------ ---------------------- -- ----- --- --- ----- ---- - ----- ---------------- -- -- - ------------------- ------- -- ---- ---------- ---
在上面的代码中,我们定义了一个 GET API,用于接收两个参数:q 和 limit。我们使用了 Joi 验证库,对这两个参数进行了验证。
在调用 schema.validate()
方法时,可以指定一个对象来进行验证。在这个例子中,我们将 req.query
对象作为参数传递给了 schema.validate()
方法。这个对象包含了请求 URL 中的查询参数。例如,对于 URL /search?q=hello&limit=20,那么 req.query
对象就会包含 { q: 'hello', limit: '20' }
。
如果验证失败,则会返回一个带有错误信息的响应。如果验证成功,则会返回一个包含请求参数的对象的响应。在这个例子中,我们将请求参数和 limit 合并,然后将其返回给客户端。
结论
在本文中,我们学习了如何在 Express.js 项目中使用 Joi 进行数据验证。我们看到了它的基本用法和高级用法,并且使用了一个实例向您展示了如何在 API 中进行数据验证。使用 Joi,您可以轻松地验证表单输入的数据、API 参数等等。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67039fdfd91dce0dc84bc531