NodeJS学习笔记(七)

处理客户端发起的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);

NodeJS学习笔记(七)_第1张图片

获取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 = 
  '菜鸟教程 Node.js 实例' +
  '' +
  '
' + '网站名:
' + '网站 URL:
' + '' + '
' + ''; //模拟一个客户端 //模拟后端 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('
'); res.write('网站URL' + body.url); } else{ res.write(postHTML); } res.end(); }); }).listen(3000);

 

你可能感兴趣的:(NodeJS学习笔记(七))