(一)处理get信息:
1.对req.url数据进行分段切分
例:
比如我们现在前台传输一个url是localhost:3000/login?user=aaa&pass=123
【注】目标是将分割好的数据放入GET中
首先,将req.url进行以’?'字符分割
var GET = {};//用来存放最终的数据
var arr = req.url.split('?')//将req.url数据以?分割开并存入arr中;
//此时
//arr[0]='/login' =>地址
//arr[1]='user=aaa&pass=123' =>数据
接下来再对arr[1]进行分割
var arr2 = arr[1].split('&');
//此时
//arr2[0]=‘user=aaa’
//arr2[1]='pass=123'
最后,再对arr2进行分割
for(var i=0;i<arr.length;i++)
{
var arr3 = arr2[i].split('=');
GET[arr3[0]]=arr3[1];
}
2.querystring
const queryString = require('querystring');
var arr = req.url.split('?');
//此时
//arr[0]='/login' =>地址
//arr[1]='user=aaa&pass=123' =>数据
var GET = queryString.parse(arr[1]);
以上两种方法获取到的GET数据是一样的
3.URL
1)不解析query
const urlLib = require('url');
var obj = urlLib.parse("http://www.baidu.com/index?a=1&b=2&c=3");
console.log(obj);
2)解析query
const urlLib = require('url');
var obj = urlLib.parse("http://www.baidu.com/index?a=1&b=2&c=3",true);
console.log(obj);
综上,最终的GET可以得
var GET = obj.query;
(二)处理post数据
post数据传输和get数据不同,他并不存放在地址中的,获取他需要用到一个事件
即req.on();
req.on('data',function(){
})
和data事件相对应的有一个end事件
req.on('end',function(){
})
且post方法的数据是分片传输的,所以我们还需要一个组装该数据的过程,定义一个
var str = ''; //用来接收分片的数据
综上,总结代码如下
var str = ''; //用来接收分片的数据
req.on('data',function(data){
str += data;
});
//数据全部到达时
req.on('end',function(){
console.log(str);
})
最后,再对str进行处理一下
var POST = queryString.parse(str);