gpt4 book ai didi

javascript - ExpressJS 后数据验证和强制数据类型

转载 作者:行者123 更新时间:2023-11-30 00:08:11 26 4
gpt4 key购买 nike

如何以“优雅的方式”为 javascript 强制执行数据类型?假设在客户端,预计会有以下格式的发布请求,

{
field1 : 123, //Number
field2 : "HI", //String
field3 : {
subfield1: 1234
subfield2: "asd"
}
}

在我的快速 route ,由于客户端可以发送任何东西(使用控制台、ajax 或 Firebug 等),我会变得如此偏执。因此,我会手动验证每个我觉得非常乏味和累人的字段。例如,

router.post('/api/add', function (req, res) {
function validVariable(input) {
return (typeof input !== 'undefined') && input;
}
if (!validVariable (req.body.field1)) {
res.send("Not Valid");
}
if (!validVariable (req.body.field2)) {
res.send("Not Valid");
}
if (!validVariable (req.body.field3)) {
res.send("Not Valid");
}
//Since everything is valid, time to check type
if (typeof req.body.field1 != 'Number')) {
res.send("Not Valid");
}
if (typeof req.body.field2 != 'String')) {
res.send("Not Valid");
}
if (typeof req.body.field3 != 'Object')) {
res.send("Not Valid");
}
//and so on...
});

我什至必须检查 JSON 的结构,以确保发布的数据在结构方面是有效的。有时这样做后,我感觉有点不舒服。有人可以指出正确的方向吗?这种做事方式是不是有点矫枉过正?我真的需要担心客户端可能 POST 任何数据吗?

最佳答案

用于请求验证和清理的流行 express 中间件:
Express validation
Express validator (建立在 Node 验证器之上)

我使用后者,我发现语法可以让我编写更少的代码,中间件结构有助于提高可重用性。

您是否需要担心具体情况取决于具体情况,这取决于您的安全顾虑以及您的错误所包含的信息量。

关于javascript - ExpressJS 后数据验证和强制数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653877/

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