1.HTTP
HTTP协议,叫超文本传输协议(Hypertext transfer protocol)。是一个规则,规定了浏览器和服务器之间通信的规则。
http的传输行为,共分为三个步骤:
-
建立连接
-
进行传输
-
断开连接
无论是哪个步骤,都是由客户端主动开始的,这样比较安全。
2、三次握手
第一次握手:客户端主动给服务器发送消息,请求连接。
第二次握手:服务器收到消息后,给客户端回应一个消息,表示已经收到要连接的请求。
第三次握手:客户端收到服务器的消息后,给服务器再次发送消息,表示收到服务器响应的消息。
3、传输
当连接建立后,客户端就可以跟服务器进行传输了,整个传输过程分为两个阶段:
-
客户端给服务器发起请求
-
服务器给客户端做出响应
3.1、请求
http协议中规定,客户端发起请求的请求信息,要遵循请求报文的格式,请求报文规定请求信息分为4个部分:
-
请求行
-
请求头
-
请求空行
-
请求主体
请求行中包含三个内容:
-
请求方式
客户端对服务器发起不同的请求方式,服务器有不同的识别规则和回应。最常见的请求方式:
-
get:参数会暴露在地址栏;数据有大小限制,最大4kb;数据只能进行url编码;get请求会被记录在历史记录;可能会被浏览器缓存。语义用于获取服务器端数据。常见的get请求包括:
-
在地址栏输入数据敲回车
-
点击a标签跳转
-
html中引入图片、引入css、引入js、引入html地址
-
form默认的提交方式,也可以设置get提交方式
-
-
post:参数不会暴露在地址栏;数据大小没有限制;数据可以不经过url编码,可以是其他格式数据;post不会被记录在历史记录;不会被浏览器缓存。语义用于给服务器提交数据。常见的post请求:form标签的post提交方式
-
put:语义用于请求服务器修改数据
-
delete:语义用于请求服务器删除数据
-
-
请求路径
这里所指的请求路径是上图中的
path+hash
部分。注意:请求路径永远是
/
开头。 -
请求的协议以及版本
http请求的协议为http。不同的网络通信,请求协议也是不同的,常见的协议有:
http/https/ssh/ftp/sftp/mongodb/mysql/
demo:nodejs服务器获取请求方式和请求路径
3.2、响应
http规定,服务器接收请求后,要对客户端进行相应。http规定响应信息必须遵循响应报文的规则。响应报文规则包含3部分内容:
-
响应行
-
响应头
-
响应主体
响应行包含3部分:
-
协议和版本
-
状态码
状态码是http协议规定用来描述这次请求,服务器给出响应的状态,http请求共有5中响应状态:
-
1xx:代表请求已被接受,需要继续处理
-
2xx:代表请求已成功被服务器接收、理解、并接受
-
3xx:代表需要客户端采取进一步的操作才能完成请求
-
4xx:代表了客户端看起来可能发生了错误,妨碍了服务器的处理
-
5xx:代表了服务器在处理请求的过程中有错误或者异常状态发生
-
-
状态描述
每个状态码,都有一个描述对应,更详细的说明这个状态码的含义。
4、四次挥手
当客户端和服务器结束这次请求后,需要断开连接。断开连接也叫作四次挥手。具体过程如下:
第一次挥手,客户端主动对服务器发起断开请求
第二次挥手,服务器回应收到这次请求,并做断开准备
第三次挥手,服务器做好断开准备后,通知客户端,可以断开了,当客户端断开后,服务器将销毁这次请求的信息,不再回应
第四次挥手,客户端告诉服务器已经断开
二、第三方模块下载
nodejs自带的模块无法满足业务需求时,我们需要自定义模块来完成功能,对于某一类型的功能,为了能重复使用,自定义的模块是需要封装的。假设已经有人封装好这样的模块了,我们只需要下载下来导入就能使用。这样由别人封装好的模块,叫第三方模块。
npm -v # 查看npm版本
npm install/i 包名
npm i 包名 包名 ... # 下载多个模块
npm i 包名@版本号 # 最新版本可以使用 @latest
npm view 模块 versions 查看模块的所有版本:
npm list # 简写 npm ls 查看所有安装好的依赖包
npm uninstall/un 包名 卸载:
npm切换镜像源:
npm config set registry 镜像源地址 # 切换命令
npm config get registry # 查看镜像源地址
npm --registry https://registry.npm.taobao.org install node-red-contrib-composer@latest # 临时切换使用
下载好的模块如果不知道怎么使用,上网查询:https://www.npmjs.com/。所有使用npm能下载好的模块,都在这个网站上能找到。