gpt4 book ai didi

node.js - NodeJS : Server-side request data validation

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:00 25 4
gpt4 key购买 nike

在服务器端验证传入数据的正确方法是什么?我使用 lodash 进行简单验证,例如 isObjectisArray 等,以及 validator对于我需要验证的情况,例如,字符串是否为 isEmail。但所有这些看起来都很尴尬,我不确定这是否会对性能造成很大影响。

应该有一种方法以更优雅的方式验证传入数据。

最佳答案

一种方法是使用 schema-inspector .

这是一个旨在根据 json 模式描述验证 json 对象的模块。

这是 github README 中的示例:

var inspector = require('schema-inspector');

// Data that we want to sanitize and validate
var data = {
firstname: 'sterling ',
lastname: ' archer',
jobs: 'Special agent, cocaine Dealer',
email: 'NEVER!',
};

// Sanitization Schema
var sanitization = {
type: 'object',
properties: {
firstname: { type: 'string', rules: ['trim', 'title'] },
lastname: { type: 'string', rules: ['trim', 'title'] },
jobs: {
type: 'array',
splitWith: ',',
items: { type: 'string', rules: ['trim', 'title'] }
},
email: { type: 'string', rules: ['trim', 'lower'] }
}
};
// Let's update the data
inspector.sanitize(sanitization, data);
/*
data is now:
{
firstname: 'Sterling',
lastname: 'Archer',
jobs: ['Special Agent', 'Cocaine Dealer'],
email: 'never!'
}
*/

// Validation schema
var validation = {
type: 'object',
properties: {
firstname: { type: 'string', minLength: 1 },
lastname: { type: 'string', minLength: 1 },
jobs: {
type: 'array',
items: { type: 'string', minLength: 1 }
},
email: { type: 'string', pattern: 'email' }
}
};
var result = inspector.validate(validation, data);
if (!result.valid)
console.log(result.format());
/*
Property @.email: must match [email], but is equal to "never!"
*/

清理架构的目的是在验证 json 之前“清理”它(设置可选值、尝试将数字转换为字符串等)。

validation 架构描述了您的 json 应遵循的属性。

然后,您调用 inspector.validate 来检查一切是否正常。

关于node.js - NodeJS : Server-side request data validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42865638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com