Node.js API

参考nodejs版本0.10.x

一.url地址解析模块

1.url.parse(‘url字符串地址’[, ‘是否将地址上的参数字符串转换为参数对象[, 斜线是否标识主机]’])

示例:
(1)在命令窗口输入: node 回车
(2)输入命令: url.parse(‘http://user:[email protected]: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:[email protected]:8080/p/a/t/h?query=string#hash’, true)
在这里插入图片描述

(4)命令窗口输入:url.parse(‘http://user:[email protected]: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:

猜你喜欢

转载自blog.csdn.net/BePowerful/article/details/84862947