现状
之前是用java写的web程序,现在接手的一个项目使用nodejs写的,因为是比较老的系统,之前用的koa2-validator作为参数验证工具,结果现在这个依赖现在直接不可用了, 如下图
➜ test git:(master) ✗ npm install koa2-validator@1.1.0
npm ERR! code ENOVERSIONS
npm ERR! No valid versions available for koa2-validator
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/liyi/.npm/_logs/2020-01-03T07_29_26_032Z-debug.log
调研
- koa-validate 三年前就已经不再更新了,没人维护的东西还是别用了
- koa-middle-validator , 这个还不错,最近一次更新是在5个月前,而且看例子也还不错。 但是这个库关注的人太少了,如果出现问题会比较麻烦, 见源码, 附上作者简书上写的教程。
- node-input-validator ,用户少,不开源
- 推荐 koa-parameter 是基于参数验证框架parameter, 给koa框架做的适配
使用样例
附上一个简单的例子
const bodyparser = require('koa-bodyparser');
//注意官方例子这里是require('..'), 请把..替换为koa-parameter
const parameter = require('koa-parameter');
const Koa = require('koa');
const app = new Koa();
app.use(bodyparser());
app.use(parameter(app));
app.use(async function (ctx) {
//id、date是框架已有的规则
ctx.verifyParams({
id: 'id',
date: 'date'
});
ctx.body = 'passed';
});
app.listen(3000);
官方支持的规则
var TYPE_MAP = Parameter.TYPE_MAP = {
number: checkNumber,
int: checkInt,
integer: checkInt,
string: checkString,
id: checkId,
date: checkDate,
dateTime: checkDateTime,
datetime: checkDateTime,
boolean: checkBoolean,
bool: checkBoolean,
array: checkArray,
object: checkObject,
enum: checkEnum,
email: checkEmail,
password: checkPassword,
url: checkUrl,
};
自定义规则
因为koa-parameter是基于parameter的,只是做了一层封装而已,底层逻辑还是按照parameter来的,自定义规则完全可以参照parameter官方说明和示例来编写