POST数据比GET数据大得多,POST数据采用分段提交方式。
req.on('data', function (data) {})-----data一段数据到达
req.on('end', function () {})------end数据全部到达
写一个前端页面,有用户、密码和textarea文本框,textarea文本框中内容较多,用来模拟POST分段请求,form.html代码如下:
<!DOCTYPE html>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<form action="http://localhost:8080/aaa" method="POST">
用户:<input type="text" name="user"><br>
密码:<input type="password" name="password"><br>
<textarea name="content" id="" cols="30" rows="10"></textarea>
<input type="submit" value="提交">
</form>
</body>
</html>
通过"querystring"模块解析post数据,var POST = querystring.parse(str);
server.js完整代码如下:
const http = require('http');
const querystring = require('querystring');
http.createServer(function (req, res) {
var str = '';//用来接收数据
var i = 0;
//data---有一段数据到达(很多次)
req.on('data', function (data) {
console.log('第' + i++ + '次接收到数据');
str += data;
});
//end---数据全部到达(一次)
req.on('end', function () {
var POST = querystring.parse(str);
console.log(POST);
res.write('this is aaa page');
res.end();
});
}).listen(8080);
运行结果如下:
由于textarea文本框中输入的内容较多,全部数据分10次接收完毕,(0--9次)