2018-11-28
之前讲的那些将字符串转换成对象的模块各有千秋,所以,今天我们就学习一个更权威的模块==>url模块
。
QAQ:get方式请求的一般用url模块。
1.为什么说url模块最权威呢?下面我们就来一探究竟吧!
①首先我们先来看看他的代码:
const url=require('url');
var obj=url.parse('http://www.baidu.com/index?uname=jack&upwd=123'
,true); //加上true才会将里面的query对象转换成
//数组对象
console.log(obj); //输出全部
console.log(obj.query); //输出个体
如下第一个console.log(obj);是输出整个obj的图:(通过这幅图大家可以清晰的看到他将整个关于计算机的所有信息都输出了,这样就更方便我们查找了)。
那么,如下第二个console.log(obj.query);的图,自然而然就是输出的我们想要的将字符串转换成数组对象的格式了。
2.之前说的都是我们用get方式请求的模块,接下来我们来学习一下post方式的(post.js)。
首先是他的html(与之前get方式相比他没有什么特别的,唯一不一样的就是method是post):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form action='http://localhost:8080' method='post'>
<p>同户名:<input type="" name="uname"></p>
<p>密码:<input type="" name="upwd"></p>
<p><input type="submit" value='提交'></p>
</form>
</body>
</html>
下面就是post方式的js代码了:
// get post
// 1.手动 2.queryString 3.url
//post : get传输数据量小 post传输的数据量大
const http=require('http');
const queryString=require('querystring');
var server=http.createServer(function(req,res){
//声明的str就是为了接收每次发送的data数据
var str='';
req.on('data',function(data){//每次发送的数据 data代表每次发送
//的数据
//小段数据 data data data
str+=data; //str=str+data
})
req.on('end',function(){//数据已经发送结束
var post=queryString.parse(str);
console.log(post);//uname=jack&upwd=123
//==>{uname:'jack',upwd:'123'}
})
});
server.listen(8080);
以上就是post的所有内容了,所以呢,最后我们还是要将这门刚接触的课程回过头来整体复习一遍:
const http=require('http');
const fs=require('fs');
const querystring=require('querystring');
const urlLib=require('url');
var server=http.createServer(function(req,res){
//get
var obj=urlLib.parse(req.url,true);
console.log(obj.query);//{uname:jack,upwd:123}
console.log(obj.pathname);
//post
var str='';
req.on('data',function(data){//每次发送的数据
str+=data;
})
req.on('end',function(){//数据发送完成
console.log(str);
})
//fs
var file_name='./www'+req.url;
fs.readFile(file_name,function(err,data){
if(err){
res.write('404');
}else{
res.write(data);
}
res.end();
})
});
server.listen(8080);
所以呢,综上所述,我们目前学习了四个模块(①http模块②querystring模块③fs模块④url模块
),还有常用的两种方式(get/post
)。
That's all,see you~