http请求概述
从输入url到显示页面的整个过程
-
DNS解析,建立TCP连接,发送http请求
先解析域名,解析出来一个IP地址,客服端个服务器建立一个TCP连接,发送http请求
-
server接收到http请求,处理,并返回
-
客户端接收到返回数据,处理数据(如渲染页面,执行js )
nodejs处理http请求
get请求和querystring
get请求,即客户端要向server端获取数据,如查询博客列表
通过querystring来传递数据,如a.html?a=100&b=200
浏览器直接访问,就发送get请求
querystring 模块
querystring从字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析。querystring模块只提供4个方法,在我看来,这4个方法是相对应的。
这4个方法分别是querystring.parse和querystring.stringify,querystring.escape和querystring.unescape。
首先,使用querystring模块之前,需要require进来:
1 const querystring = require("querystring");
1.querystring.parse(str,separator,eq,options)
参数:obj指需要序列化的对象
separator(可省)用于连接键值对的字符或字符串,默认值为"&";
eq(可省)用于连接键和值的字符或字符串,默认值为"=";
options(可省)传入一个对象,该对象可设置encodeURIComponent这个属性:
encodeURIComponent:值的类型为function,可以将一个不安全的url字符串转换成百分比的形式,默认值为querystring.escape()。
parse这个方法是将一个字符串反序列化为一个对象。
querystring.parse("name=whitemu&sex=man&sex=women");
/*
return:
{ name: 'whitemu', sex: [ 'man', 'women' ] }
*/
querystring.parse("name=whitemu#sex=man#sex=women","#",null,{maxKeys:2});
/*
return:
{ name: 'whitemu', sex: 'man' }
*/
2.querystring.stringify(obj,separator,eq,options)
stringify这个方法是将一个对象序列化成一个字符串,与querystring.parse相对。
querystring.stringify({name: 'whitemu', sex: [ 'man', 'women' ] });
/*
return:
'name=whitemu&sex=man&sex=women'
*/
querystring.stringify({name: 'whitemu', sex: [ 'man', 'women' ] },"*","$");
/*
return:
'name$whitemu*sex$man*sex$women'
*/
3.querystring.escape(str)
escape可使传入的字符串进行编码
querystring.escape("name=慕白");
/*
return:
'name%3D%E6%85%95%E7%99%BD'
*/
4 querystring.unescape(str)
unescape方法可将含有%的字符串进行解码
querystring.unescape('name%3D%E6%85%95%E7%99%BD');
/*
return:
'name=慕白'
*/
总结:
querystring.stringify序列化;
querystring.parse反序列化;
querystring.escape编码;
querystring.unescape解码;
post请求和postdata
post请求,即客户端要像服务端传递数据,如新建博客
通过post data传递数据,后面会演示