現(xiàn)狀
之前是用java寫(xiě)的web程序,現(xiàn)在接手的一個(gè)項(xiàng)目使用nodejs寫(xiě)的猪腕,因?yàn)槭潜容^老的系統(tǒng)姜胖,之前用的koa2-validator作為參數(shù)驗(yàn)證工具烙肺,結(jié)果現(xiàn)在這個(gè)依賴現(xiàn)在直接不可用了, 如下圖
? 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
調(diào)研
- koa-validate 三年前就已經(jīng)不再更新了纳猪,沒(méi)人維護(hù)的東西還是別用了
- koa-middle-validator , 這個(gè)還不錯(cuò),最近一次更新是在5個(gè)月前桃笙,而且看例子也還不錯(cuò)氏堤。 但是這個(gè)庫(kù)關(guān)注的人太少了,如果出現(xiàn)問(wèn)題會(huì)比較麻煩, 見(jiàn)源碼, 附上作者簡(jiǎn)書(shū)上寫(xiě)的教程搏明。
- node-input-validator 鼠锈,用戶少,不開(kāi)源
- 推薦 koa-parameter 是基于參數(shù)驗(yàn)證框架parameter, 給koa框架做的適配
使用樣例
附上一個(gè)簡(jiǎn)單的例子
const bodyparser = require('koa-bodyparser');
//注意官方例子這里是require('..'), 請(qǐng)把..替換為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是框架已有的規(guī)則
ctx.verifyParams({
id: 'id',
date: 'date'
});
ctx.body = 'passed';
});
app.listen(3000);
官方支持的規(guī)則
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,
};
自定義規(guī)則
因?yàn)閗oa-parameter是基于parameter的购笆,只是做了一層封裝而已,底層邏輯還是按照parameter來(lái)的虚循,自定義規(guī)則完全可以參照parameter官方說(shuō)明和示例來(lái)編寫(xiě)