NPM酷庫042:ajv,JSON 模式驗證

脈衝雲_樑興臣發表於2019-02-16

NPM酷庫,每天兩分鐘,瞭解一個流行NPM庫。·

在NPM酷庫041中,我們學習瞭如何用validator庫來驗證字串是否是Email、URL等,在開發中,除了字串,我們還需要對更復雜的資料進行驗證。比如需要Object滿足那些屬性,每個屬性都是什麼型別的,這些條件稱之為資料模式驗證。

在對資料的模式驗證領域有專門的標準,叫做 JSON Schema。就是按照JSON Schema標準宣告一個模式物件,然後使用模式驗證工具去驗證目標資料。

ajv

ajv 是一個非常流行的JSON Schema驗證工具,並且擁有非常出眾的效能表現。下方的例子中,我們使用ajv來驗證使用者輸入的表單資料是否合法。

const Ajv = require(`ajv`);

let schema = {
  type: `object`,
  required: [`username`, `email`, `password`],
  properties: {
    username: {
      type: `string`,
      minLength: 4
    },
    email: {
      type: `string`,
      format: `email`
    },
    password: {
      type: `string`,
      minLength: 6
    },
    age: {
      type: `integer`,
      minimum: 0
    },
    sex: {
      enum: [`boy`, `girl`, `secret`],
      default: `secret`
    },
  }
};

let ajv = new Ajv();
let validate = ajv.compile(schema);

let valid = validate(data);
if (!valid) console.log(validate.errors);

在上述程式碼中,我們宣告瞭一個資料模式schema ,這個模式要求目標資料為一個物件,物件可以有五個欄位 usernameemailpasswordagesex,並分別定義了五個欄位的型別和資料格式要求,並且其中 usernameemailpassword 必填。然後我們使用這個模式去驗證使用者輸入的資料 data 是否滿足我們的需求。

注意:

  • JSON Schema 是一個宣告模式描述物件的標準,並非一個庫
  • ajv 是一個JSON Schema標準驗證器的實現,除了ajv還有很多其他的庫
  • 程式碼中的 schema 是使用 JSON Schema 生成的模式描述物件
  • 程式碼中 data 是我們要進行檢查的資料

參考資料

JSON Schema http://json-schema.org

AJV https://github.com/epoberezki…

相關文章