1.接收参数
在Node中接受GET/POST请求的参数不像PHP那样,在PHP中直接有全局变量$_GET,$_POST来接受url,或者请求体重的参数。
在node中接受GET参数使用url.parse(req.url, true).query可以获取请求参数,使用queryString.parse(data)来从请求体中来获取字段。
// server.js var http = require("http"); var url = require('url'); var router = require('./router'); http.createServer(function(req, res){ if ( req.url !== '/favicon.ico'){ pathname = url.parse(req.url).pathname.replace(///,''); console.log(pathname); try { router[pathname](req, res); } catch(e) { console.log('error:'+e); res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); res.write(e.toString()); res.end(); }; } }).listen(3000); console.log("server running at http:127.0.0.1:3000");
/** * router.js */ var fs = require('fs'); var url = require('url'); var querystring = require('querystring'); //post需要导入 module.exports = { login: function(req, res){ /***** GET 为同步获取参数 ***/ /* GET接受参数 var rdata = url.parse(req.url, true).query; console.log(rdata); if (rdata['email']!=undefined) { console.log(rdata['email']); } */ /***** GET 为同步获取参数 ***/ /**************POST***********异步*********************/ var post =''; req.on('data', function(chunk){ post += chunk; }); req.on('end', function(){ post = querystring.parse(post); console.log('收到参数:'+post['username']); //因为这里是异步,所以不能使用 res.write(); console.log('收到参数:'+post['password']); //console.log('收到参数:'+post); // Cannot convert object to primitive value // *** 这里会报错哟!!!! *** fs.readFile('./login.html', function(err, data){ if( err){ console.log(err); res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}) res.write(err.toString()); res.end(); } else { res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}) res.write(data); res.end(); } }) }) /*************************异步*********************/ }, register:function(req, res){ fs.readFile('.register.html', function(err, data){ if(err) { console.log(err); res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}) res.write(err.toString()); res.end(); return; } else{ res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); res.write(data); res.end(); } }) }, showImage:function(req, res){ fs.readFile('./test.png',function(err, data){ if (err) { console.log(err); return; } else{ console.log("开始读取图片"); res.writeHead(200, {'Content-Type':'image/jpeg'}); res.write(data); res.end();//写在互调函数外面会报错的哟 } }) } }