我正在学习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中执行此操作吗?请没有模块准系统!
答案 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
表单,您最好使用第三方模块,因为解析这些类型的请求要难得多。