推薦一個基於 Node.js 的表單驗證庫 [每日前端夜話0x23]
京程一燈 前端先鋒
每日前端夜話0x23
每日前端夜話,陪你聊前端。
每天晚上18:00準時推送。
正文共:6350 字
預計閱讀時間: 15 分鐘
翻譯:瘋狂的技術宅
原文:https://www.toptal.com/nodejs/smart-node-js-form-validation
API 在執行過程中的一個基本任務是數據驗證。 在本文中,我想向你展示如何爲你的數據添加防彈驗證,同時返回風格良好的格式。
在 Node.js 中進行自定義數據驗證既不容易也不快。 爲了覆蓋所有類型的數據,需要寫許多函數。 雖然我已經嘗試了一些 Node.js 的表單庫 —— Express 和 Koa ——他們從未滿足我的項目需求。 這些擴展庫要麼不兼容複雜的數據結構,要麼在異步驗證出現問題。
使用 Datalize 在 Node.js 中進行表單驗證
這就是爲什麼我最終決定編寫自己的小巧而強大的表單驗證庫的原因,它被稱爲 datalize。 它是可擴展的,因此你可以在任何項目中使用它,並根據你的要求進行自定義。 它能夠驗證請求的正文、查詢或參數,還支持async 過濾器和複雜的JSON結構,如 數組 或 嵌套對象。
Github:https://github.com/flowstudio/datalize
配置
Datalize可以通過npm安裝:
1npm install --save datalize
要解析請求的正文,你應該使用其他的庫。 如果你還沒有用過,我建議使用 koa-body for Koa 【https://github.com/dlau/koa-body】或 body-parser for Express 【https://github.com/expressjs/body-parser】。
你可以將本教程用於已配置好的HTTP API服務器,也可以使用以下簡單的Koa HTTP服務器代碼。
1const Koa = require('koa');
2const bodyParser = require('koa-body');
3
4const app = new Koa();
5const router = new (require('koa-router'))();
6
7// helper for returning errors in routes
8app.context.error = function(code, obj) {
9this.status = code;
10this.body = obj;
11};
12
13// add koa-body middleware to parse JSON and form-data body
14app.use(bodyParser({
15enableTypes: ['json', 'form'],
16multipart: true,
17formidable: {
18maxFileSize: 32 * 1024 * 1024,
19}
20}));
21
22// Routes...
23
24// connect defined routes as middleware to Koa
25app.use(router.routes());
26// our app will listen on port 3000
27app.listen(3000);
28
29console.log('