下面将会介绍关于GET/POST请求的例子,在这之前,先来说node 判断请求模式,可以在控制台输出console.log(req);这里会有很多内容,如果要直接点的话,也可以输出res.end("请求方式:"+req.method);
http.createServer(function(req,res){
res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
res.end('请求方式:'+req.method);
}
执行结果:
下面是一个提交表单的例子;
新建一个表单
<p>输入的用户名:{email}</p>
<p>输入的密码:{pwd}</p>
<form method="post" action="./form">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="email"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="pwd"/></td>
</tr>
<tr><td><input type="submit" value="登录"/></td></tr>
</table>
</form>
直接就在当前页面映射请求内容了{email}、{pwd};
新建一个router.js模块
var http=require('http');
var Method=require('./model/method.js');
http.createServer(function(req,res){
res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
if(req.url!=='\favicon.ico'){
var reqMethod=req.method;
Method[reqMethod](req,res);
}
}).listen(8000);
console.log("访问地址:http://localhost:8000");
router.js模块里,通过判断是什么请求方式,然后再调用method模块里的函数;
创建methods.js
var fs=require("fs");
var url = require('url');
var util = require('util');
var querystring=require('querystring');
//读取文件内容
function readFile(params,res){
var arr=['email','pwd'];
fs.readFile('./model/form.html',function(err,data){
if(err){
return console.log(err);
}
dataStr=data.toString();
for(var i=0;i<arr.length;i++){
reg=new RegExp("{"+arr[i]+"}","g");//新建正则
if(params[arr[i]]==undefined){//筛选undefined
params[arr[i]]='';
}
dataStr=dataStr.replace(reg,params[arr[i]]);//替换成请求信息
}
res.write(dataStr.toString());
res.end('');
})
}
module.exports={
GET:function(req,res){//GET请求方式
var params=url.parse(req.url,true).query;
readFile(params,arr,res);
},
POST:function(req,res){//POST请求方式
var params='';
req.on('data',function(chunk){
params+=chunk;
});
req.on('end',function(){
params=querystring.parse(params);
readFile(params,arr,res);
});
}
}
在还没有请求信息时,参数输出值是undefined,界面也将映射出来,因此,在这里以‘’处理;
GET请求内容是直接嵌入在路径中的,因此直接获取相应的参数值就可以了;
POST请求内容在请求体中,通过req的data事件监听函数,请求的数据都会累加到params变量中,当end事件触发后,通过querystring.parse将params解析成POST请求格式;
POST请求方式,执行结果:
GET请求方式: