一.url地址解析模块
1.url.parse(‘url字符串地址’[, ‘是否将地址上的参数字符串转换为参数对象[, 斜线是否标识主机]’])
示例:
 (1)在命令窗口输入: node 回车
 (2)输入命令: url.parse(‘http://user:pass@host.com:8080/p/a/t/h?query=string#hash’)
 (3)地址解析结果如下:
 
 url对象属性详解:
 protocol: 小写的请求协议,如 protocol: ‘http:’
 slashes: 在协议冒号后面是否用斜杠’/’,值为false/true
 auth: url验证authentication部分的信息
 host:小写的主机部分的信息,包括端口号
 port: 端口号
 hostname: 主机名称
 hash:#部分的信息,锚点
 search:参数字段的部分,包括前置的’?’
 query: 参数字段的部分
 pathname:路径部分,在主机信息之后,参数信息之前,包括中间的斜杠’/’
 path: pathname和query部分的组合
 href: 最初解析的最完整的地址,主机和协议都是小写
可参考官网上的详解图:
 
(4)命令窗口输入:url.parse(‘http://user:pass@host.com:8080/p/a/t/h?query=string#hash’, true)
 
(4)命令窗口输入:url.parse(‘http://user:pass@host.com:8080/p/a/t/h?query=string#hash’, true, true)
2.url.format(‘urlObject’)
将一个url对象解析为完整url字符串地址
 示例:
 
3.url.resolve(from , to)
获取一个基本URL和href URL,相当于解析为浏览器的锚标记
 示例:
 url.resolve(’/one/two/three’, ‘four’) // ‘/one/two/four’
 url.resolve(‘http://example.com/’, ‘/one’) // ‘http://example.com/one’
 url.resolve(‘http://example.com/one’, ‘/two’) // ‘http://example.com/two’
二.querystring模块
1.querystring.stingify(对象[, 参数之间的连接符[, key value之间的连接符[, 限制key个数]]]),序列化对象
输入:
 querystring.stringify({
 name: ‘毛豆’,
 family: [‘父亲’, ‘母亲’],
 address: ‘’
 })
 结果:
 
以逗号连接参数,输入:
 querystring.stringify({
 name: ‘毛豆’,
 family: [‘父亲’, ‘母亲’],
 address: ‘’
 }, ‘,’)
 结果:
 
以’:'连接key,value,输入:
 querystring.stringify({name: ‘毛豆’,family: [‘父亲’, ‘母亲’],address: ‘’}, ‘,’, ‘:’)
 结果:
 
key的maxlength设置为0,取消key个数限制,输入:
 querystring.stringify({name: ‘毛豆’,family: [‘父亲’, ‘母亲’],address: ‘’}, ‘,’, ‘:’, 0)
 结果(没什么变化):
 
2.querystring.parse(字符串[, 参数之间的连接符[, key value之间的连接符[, 限制key个数]]]),反序列化字符串
用逗号连接参数,’:‘连接key,value方式解析字符串,输入:
 querystring.parse(‘name:%E6%AF%9B%E8%B1%86,family:%E7%88%B6%E4%BA%B2,family:%E6%AF%8D%E4%BA%B2,address:’,’,’,’:’)
 结果如下:
 
3.querystring.escape(str),将字符串编码
输入: querystring.escape(‘歡迎’)
 结果:
 
4.querystring.unescape(str), 将编码字符串转码
输入:querystring.unescape(’%E6%AD%A1%E8%BF%8E’)
 结果:
 
http模块
http是一种用于计算机之间相互通信的协议,通信过程如下:
 (1)http客户端发起请求,创建端口
 (2)http服务端在端口监听客户端请求
 (3)http服务器向客户端返回状态和内容
从浏览器输入网址到页面渲染整个过程经历了什么?
以chrome为例:
 (1)chrome搜索自身的DNS缓存,地址为:chrome://net-internals/#dns,存储了浏览器访问记录,如果浏览器没有找到缓存或者过期失效,进入第二步;否则,停止搜索返回。
 (2)搜索操作系统自身的DNS缓存
 (3)读取本地的host文件(windows系统下安装文件夹下system32)
 (4)浏览器发起一个DNS的域名解析请求
        (4.1)宽带运营商服务器查看本身的缓存
        (4.2)运营服务器发起一个迭代DNS解析的请求
                          运营商向根域的服务器提问:请问imooc.com的域名地址是多少?
                                         根域的服务器回答:告诉你com域的顶级域的IP地址。
                       运营商向com域的服务器提问:请问imooc.com的域名地址是多少?
                                      com域的服务器回答:告诉你imooc.com域的IP地址。
             运营商向imooc.com域的服务器提问:请问imooc.com的域名地址是多少?
                             imooc.com域的服务器向运营商发送结果。
运营商服务器把结果返回给操作系统内核,同时缓存在自身的缓存区
 操作系统内核把结果返回给浏览器
 浏览器最终拿到了www.imooc.com对应的IP地址
(5)浏览器获得域名对应的IP地址之后,发起HTTP“三次握手”
 (6)TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求。比如用HTTP的GET方法请求根域里的一个域名,协议可以采用HTTP1.0的协议。
 (7)服务器端接受到了这个请求,根据路径参数,经过后端的一些处理之后,把处理后的结果数据返回给浏览器。
 (8)浏览器拿到服务器返回的完整html代码,在解析和渲染页面时,js、css、图片静态资源同样也是通过一个个http请求获取。
 (9)浏览器根据拿到的资源对页面进行渲染,最后将完整的页面呈现给用户。

 timing
 stalled: 请求发出前的等待时间,包括代理协商、可复用的htttp连接释放的时间,不包含DNS查询和TCP连接建立时间
 DNS lookup: 域名解析的时间
 proxy negotiation: 代理商协商时间
 request sent: 请求第一个字节到最后一个字节发出完成时间,也就是上传时间
 waiting:请求发出到收到第一个响应字节的时间,整个过程包括服务器响应这个请求所做的逻辑处理
 content download:收到第一个响应字节到最后一个响应字节的时间,也就是下载时间
请求方法
 get
 post
 put
 delete
 head
 trace
 options
状态码
 1XX:
 2XX:
 3XX:
 4XX:
 5XX:
                  
                  
                  
                  
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					1259
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            