如何在Node.js中获取输入POST数据?

时间:2014-10-16 15:53:56

标签: node.js

我正在学习Node.js.我试图在不使用第三方模块或框架的情况下学习它。

我试图找出如何从每个输入中获取POST数据。

我正在制作登录系统:

<form method="POST" action="/login">
   <input name="email" placeholder="Email Address" />
   <input name="password" placeholder="Password" />
</form>

因此用户登录并且输入数据 POST 编辑到服务器。

Node.js服务器已准备好进行此POST:

 var http = require('http');
 var server = http.createServer(function(req, res) {


 if(req.method == POST && req.url == '/login') {


 var body = "";

 req.on('data', function (chunk) {
 body += chunk;
  });


 req.on('end', function () {
 console.log(body);
 });

 }

 });
 server.listen(80);

上面的node.js服务器代码可以在console.log中使用。例如,这将是console.log这样的帖子数据:
        email=emailaddy@gmail.com password = thisismypw

但我如何单独获取输入数据?我认为在PHP中我可以通过这种方式定位每个输入:

  $_POST['email']  and $_POST['password']

我可以将这些值放入变量中,并使用它们来INSERT或CHECK数据库。

有人可以告诉我如何在Node.js中执行此操作吗?请没有模块准系统!

1 个答案:

答案 0 :(得分:10)

对于application/x-www-form-urlencoded表单(默认),您通常只需对数据使用querystring解析器:

var http = require('http'),
    qs = require('querystring');

var server = http.createServer(function(req, res) {
  if (req.method === 'POST' && req.url === '/login') {
    var body = '';
    req.on('data', function(chunk) {
      body += chunk;
    });
    req.on('end', function() {
      var data = qs.parse(body);
      // now you can access `data.email` and `data.password`
      res.writeHead(200);
      res.end(JSON.stringify(data));
    });
  } else {
    res.writeHead(404);
    res.end();
  }
});

server.listen(80);

对于multipart/form-data表单,您最好使用第三方模块,因为解析这些类型的请求要难得多。