处理客户端发起的GET请求
get请求一般直接嵌入URL中,因此我们可以手动解析URL后面的内容
var http = require('http');
var url = require('url');
var util = require('util');
http.createServer(function(req,res){
res.writeHead(200,{'Content-Type': 'text/plain;charset=utf-8'});
res.end(util.inspect(url.parse(req.url,true))) //req.url转对象,再对象转字符串
}).listen(3000);
获取URL参数
上面截图中我们可以看到req.url里面有query参数,我们先把req.url对象化,也就是url.parse(req.url,true),然后url.parse(req.url,true).query即可获得{name:'菜鸟教程',url:'www.runoob.com'},然后url.parse(req.url,true).query.name即可获得菜鸟教程四个字。
获取POST请求内容
由于恶意post会大大消耗服务器资源,所以nodejs不会默认解析请求体,需要我们手动来做
var http = require('http');
var querystring = require('querystring');
http.createServer(function(req,res){
var post = '';
req.on('data',function(chunk){
post += chunk;
}) //通过req的data事件监听函数,每当接收到请求体请求,就累加到post变量中
req.on('end',function(){
post = querything.parse(post);
res.end(util.inspect(post));
})
}).listen(3000);
一个post实例
var postHTML =
'<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' +
'<body>' +
'<form method="post">' +
'网站名: <input name="name"><br>' +
'网站 URL: <input name="url"><br>' +
'<input type="submit">' +
'</form>' +
'</body></html>'; //模拟一个客户端
//模拟后端
var http = require('http');
var querystring = require('querystring');
http.createServer(function(req,res){
var body = '';
req.on('data',function(chunk){
body += chunk;
});
req.on('end',function(){
body = querystring.parse(body);
res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
if(body.name && body.url){
res.write('网站名' + body.name);
res.write('<br>');
res.write('网站URL' + body.url);
}
else{
res.write(postHTML);
}
res.end();
});
}).listen(3000);