Koaパラメータ検証フレームワーク調査

7672 ワード

現状
以前はjavaで書かれたwebプログラムでしたが、今引き継いだプロジェクトはnodejsで書かれています.比較的古いシステムなので、以前使っていたkoa 2-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は3年前から更新されていません.誰もメンテナンスしていないものは
  • を使わないでください.
  • 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の公式説明と例を参照して書くことができます.