【问题标题】:Checking pass field in post data [NodeJS]检查发布数据中的传递字段 [NodeJS]
【发布时间】:2014-03-21 08:09:33
【问题描述】:

我在节点 js 中传递帖子数据时遇到问题。我已经知道这是如何工作的,但我不知道如何验证帖子数据中的字段。

例子:

如果我通过 json {"userInfo":"myusername"} 我的服务器接受它。 但是,如果我传递一个格式无效的 json,例如 {"usersInfo":"myusername"},我的服务器就会崩溃。我的目标是在收到数据之前,我需要检查字段是否有效,否则我将发送 400 Bad Request 状态代码res.writeHead(400);

    app.post('/api/adduser', function(req, res) {

         var userInfo = req.body.userInfo;

         //code goes here

    });

有什么方法可以做到这一点吗?谢谢大家。

【问题讨论】:

  • 您的服务器何时崩溃?我怀疑当您尝试使用发布的数据时确实如此,因此您应该可以检测到不良数据并做出相应的响应,如下 Jonathan 所述。

标签: javascript json node.js validation rest


【解决方案1】:

您至少应该检查一下是否定义了 req.body.userInfo。

app.post('/api/adduser', function(req, res) {
     if( typeof req.body.userInfo === "undefined" ) {
         // error code here
     } else {
         // add-user code goes here
     }
});

我建议不要使用userInfo == undefined,因为你只是在制造一个让虫子爬进去的裂缝。不要去那里。

更强大的解决方案是使用验证模块。 node.js 有几个不同的验证器。您选择什么取决于您的口味和您使用的框架(表达、重新整理等)。验证器确实超出了您最初问题的范围,但您知道,仅供参考。

【讨论】:

    【解决方案2】:

    如果您的密钥可以以不同的方式命名,您可以检查它是否未定义:

    if(userInfo == undefined){
        res.writeHead(400)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 2021-07-26
      • 2017-12-26
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      相关资源
      最近更新 更多