在现代 Web 应用中,表单验证是一个必不可少的部分。虽然在服务器上开展表单验证是可行的,但在客户端上实现表单验证会更加高效和易于使用,因为这样就可以在用户尝试提交表单之前告知他们错误。
Express 的 npm 包 celebrate 实现了一个高效的中间件,用于验证客户端提交的请求。它可以帮助开发者们实现客户端的验证,从而减少服务器请求以及最大限度地通过验证客户端数据来提高安全性。
在本篇文章中,我们将学习 npm 包 celebrate 的使用教程,以及如何在你的 Web 应用中使用该包。
安装 celebrate
你可以通过以下命令来安装 celebrate:
npm install celebrate
使用 celebrate
现在,我们假设您已经安装了 Express 应用,并且您具备了基本的 JavaScript 知识和一些 Express 框架的使用经验。
首先,导入 celebrate 模块:
const { celebrate, Joi } = require("celebrate");
然后,你可以将一个或多个中间件添加到应用程序中的路由器:
-- -------------------- ---- ------- ----- ------ - ----------------- ------------ ------------- ----------- ----- ------------------- --------- ------------- --------- ------------- ------ --------------------- ----- ------------- --- --- ----- ---- -- - -- -- ---- -- - --
上面的代码示例中,我们使用 celebrate 中间件进行表单验证。我们定义了一个包含 username、password、email 以及 name 四个字段的表单,使用了不同的 Joi 校验方案进行校验。
如果请求体(也就是表单)符合定义的 schema 规则,则通过校验,否则返回错误信息。
最后,你还需要在代码的其他部分定义错误处理机制:
app.use(errors());
校验方案
Joi API 提供了各种校验器,可以人性化地定义期望的输入的类型、格式以及数据。接下来,是几种常用的校验方案:
字符串
Joi.string()
- 期望 input 是 string 类型。Joi.string().alphanum()
- 期望 input 是 alpha-numeric 的字符。Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/)
- 期望 input 是一个字符串,而且字符串必须是一个长度在 3 到 30 个字符的 alpha-numeric 字符。
数字
Joi.number()
- 期望 input 是 number 类型。Joi.number().integer()
- 期望 input 是 integer 类型。Joi.number().min(20)
- 期望 input 是一个大于等于 20 的数字。
对象
Joi.object()
- 期望 input 是 object 类型。Joi.object({username: Joi.string(), password: Joi.string()})
- 期望 input 是一个对象,其中至少包含 username 和 password 属性。
数组
Joi.array()
- 期望 input 是 array 类型。Joi.array().items(Joi.string())
- 期望 input 是一个数组,其中包含的每个元素都是字符串类型的。
示例代码
下面是一个完整的示例代码。它定义了一个简单的 Express 应用程序,用于演示如何使用 celebrate 进行表单验证:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ---------- ---- ------ - - --------------------- ----- --- - ---------- ----- ------ - ----------------- ------------ -------- ----------- ----- ------------------- --------- ------------------------ --------- --------------------------------------------------- ------ -------------------------------- ----- ------------------------ --- --- ----- ---- -- - ------------------- - -- ------------ -------- ------------------ ---------------- -- -- - -------------------- --- --------- -- ---- -------- ---
在上面的示例代码中,我们使用 Joi 定义了一个包含 username、password、email 以及 name 四个字段的表单,然后使用 celebrate 中间件进行表单验证。如果请求体符合定义的 schema 规则,则通过校验,否则返回错误信息。
结论
在本文中,我们讲解了在 Express 应用程序中使用 celebrate npm 包实现表单验证的方法。通过使用 celebrate,我们可以在客户端对数据进行验证,从而减少服务器端的请求以及通过验证客户端数据来提高应用程序的安全性。
在实际开发中,表单验证是一个必要的步骤,因此使用 celebrate 库是一个很好的选择,可以帮助开发者们快速进行表单的验证,保证数据的安全。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/celebrate