NPM酷庫043:joi,語義化模式驗證

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

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

在NPM酷庫042中,我們瞭解到了JSON Schema資料模式驗證,以及ajv庫。今天我們來學習另一個物件資料驗證的庫joi。

joi

joi 是語義化的物件資料模式驗證庫,所謂語義化,是指其方法名能夠明確表達其含義。

const Joi = require(`joi`);

// 宣告模式
const schema = Joi.object().keys({
    username: Joi.string().alphanum().min(3).max(30).required(),
    password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/),
    access_token: [Joi.string(), Joi.number()],
    birthyear: Joi.number().integer().min(1900).max(2013),
    email: Joi.string().email()
}).with(`username`, `birthyear`).without(`password`, `access_token`);

// 驗證
const result = Joi.validate({ username: `abc`, birthyear: 1994 }, schema);

// result.error === null -> valid

注意:joi並非是JSON Schema標準的實現,另外,使用ajv驗證JSON Schema可以將模式配置資訊儲存在.json檔案中,因為JSON Schema模式是宣告式的,而joi則必須在程式碼檔案中實現模式配置,因為joi的語義化必須以函式呼叫來實現。

參考資料

https://github.com/hapijs/joi

https://github.com/hapijs/joi…

相關文章