介绍
koa-joi-mw 是一个基于 koa2 的中间件,它可以帮助我们使用 Joi (一个流行的 JavaScript 校验库)对请求参数进行校验。
koa-joi-mw 已经处理了校验逻辑,解析失败后会自动抛出错误,让错误处理更方便。它还提供了一些扩展功能,比如自定义错误处理逻辑、数据类型转换等。
在开发中,我们需要保证数据的完整性和安全性。koa-joi-mw 可以很好的帮我们解决这些问题。
安装
你可以使用 npm 或 yarn 来安装 koa-joi-mw。
npm install koa-joi-mw --save
使用
我们先创建一个简单的 koa2 服务器,然后使用 koa-joi-mw 对请求参数进行校验。
-- -------------------- ---- ------- ----- --- - --------------- ----- ---------- - -------------------------- ----- --- - --------------- ----- -------- - ---------------------- ----- --- - --- ------ -- -- -------------- ------ ------- ---- ---------------------- -- -- ---------- ---------- -- -------------------- ------------------ ------ ------------ ----- --------------------------------------------- ----- --------------------------------------------- --- ---- -- ----------------- ------------- ----- -- - ---------- - ---- -------- - ------ -------------------------- ----- --------------------------- --- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
现在访问 http://localhost:3000/?arg1=1&arg2=2
,你会得到以下结果:
arg1: 1, arg2: 2
自定义错误处理逻辑
有时候,koa-joi-mw 的默认错误处理逻辑可能并不适合我们的需求。比如,我们希望返回更友好的错误信息。
在这种情况下,我们可以自定义错误处理逻辑。
-- -------------------- ---- ------- -- -------- -------- ------------------- ---- - ----- --- - ------------------- -- ------------------ --- -------------- - -------- --- --- - -- -- ---------- ---------------- ------------------ ------ ------------ ----- --------------------------------------------- ----- --------------------------------------------- --- ------------ --------------- ----
现在访问 http://localhost:3000/?arg1=1&arg2=-2
,你会得到:
{ "message": "arg2 must be a positive number" }
数据类型转换
在 koa-joi-mw 中,我们可以使用 convert 选项来启用数据类型转换的功能。
比如,我们希望将字符串类型的参数转换成整数类型:
// 使用 convert 选项 app.use(koaJoiMw({ query: Joi.object({ arg1: Joi.number().integer().positive().required(), arg2: Joi.number().integer().positive().required(), }), convert: true, // 启用数据类型转换 }));
默认情况下,koa-joi-mw 不会对参数值进行转换,而是使用原始字符串类型;而开启 convert 后,koa-joi-mw 会根据 Joi 的校验规则对参数值进行自动转换。
例如,现在访问 http://localhost:3000/?arg1=1&arg2=2
,你会得到:
arg1: 1, arg2: 2
而当访问 http://localhost:3000/?arg1=1&arg2=2.5
时,koa-joi-mw 会将参数 arg2
的值自动转换成整数 2。
总结
在使用 koa 开发 web 应用时,koa-joi-mw 可以帮助我们简化请求参数校验的代码,提高开发效率。除此之外,它还提供了自定义错误处理和数据类型转换等功能,让我们可以更灵活地处理请求数据。
在日常开发中,数据的完整性和正确性非常重要,我们应该养成对请求参数进行校验的习惯,并尽可能地利用像 koa-joi-mw 这样的工具来简化校验操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600567f181e8991b448e4181