Koa参数验证框架调研

现状

之前是用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官方说明和示例来编写

你可能感兴趣的:(NodeJs)