文章目录
前言:本章的知识比较杂,涵盖了很多网络知识,全部放到node里面了,主要查看目录
1. node是什么
- node.js 是一个基于
Chrome V8
引擎的js运行环境 - node.js 使用了一个事件驱动、非阻塞式
I/O
( 输入,输出 ) 的模型,使其轻量又高效 - 它不是一门新的编程语言,它是 js 服务端的运行环境
2. node中的js组成部分
- ECMAScript
- 全局成员
- 模块成员
- 核心模块、第三方模块、用户自定义模块
3. C/S 架构与 B/S架构
- B/S 架构:Browser(浏览器) → Server(服务器),通过浏览器访问一个网站,服务器提供数据存储等服务
- C/S 架构:Client(客户端) → Server(服务器),安装软件到电脑使用,服务器提供数据存储等服务
4. Get请求
请求在网站的访问过程中很常见,并且请求分为多种方式:GET/get
、POST/post
、PUT/put
、DELETE/delete
、OPTIONS/options
等。其中GET和POST最常用。
4.1 什么是GET请求?
GET从字面上理解为获取,通常用于获取服务端的数据,获取页面默认为get请求
4.2 常见的发起GET请求的方式
- 地址栏访问
- src/href
- 表单
4.3 网页中的GET请求
- 各种搜索框
- 各种详情页面
- 大部分超链接
4.4 GET方式提交数据的格式
- 格式:
index.html?userName=jack&password=123
- 参数名与参数值之间没有空格
- 参数值不需要使用单双引号包括
4.5 GET方式提交数据的特点
- get方式在url后面拼接参数,只能以文本的形式传递数据
- 传递的数据量小,4KB左右(不同浏览器会有差异)
- 安全性低,会将数据显示在地址栏
- 速度快,通常用于对安全性要求不高的请求
5. Post请求
5.1 什么是post请求
字面上理解,post就是指发送,提交,它可以向指定的资源提交要被处理的数据
5.2 为什么需要POST请求
GET方式提交数据通过URL传递到请求的页面,提交的数据量一般较小,用于请求页面数据。此外,GET方式传递的数据安全性低, 对于密码等隐私信息、文件上传必须使用POST方式提交。
要求:如果使用表单方式进行提交,表单的method必须设置为POST。
5.3 Post请求特点
- post方式安全性比较高,放在body里面传输
- 传递数据量大,请求对数据长度没有要求
- 请求不会被缓存,也不会保留在浏览器历史中(body的方式)
- post方式提交数据上限默认为8M(可以在服务端去修改)
6. Get和Post的区别
- post更安全一些
- …
7. 报文
7.1 请求报文
7.1.1 请求行
GET /demo.html HTTP/1.1
请求方式 + 空格 + 请求路径 + 空格 + HTTP 协议版本
7.1.2 请求头
客户端想要告诉服务端的一些额外信息,以下为常见的请求头:
键 | 值 |
---|---|
Host | 请求的主机 |
Cache-Control | 控制缓存(例如:max-age=60 缓存 60 秒) |
Accept | 客户端想要接收的文档类型,逗号分隔 |
User-Agent | 标识什么客户端帮你发送的这次请求 |
Referer | 这次请求的来源 |
Accept-Encoding | 可以接受的压缩编码 |
Cookie | 客户端本地的小票信息 |
7.1.3 请求体
这次请求客户端想要发送给服务端的数据正文,一般在 GET 请求时很少用到,因为 GET 请求主观上都是去“拿东西”。
7.2 响应报文
7.2.1 状态行
HTTP/1.1 200 OK
HTTP 协议版本 + 空格 + 状态码 + 空格 + 状态描述
7.2.2 响应头
服务端想要告诉客户端的一些额外信息,常见的有以下:
键 | 值 |
---|---|
Date | 响应时间 |
Server | 服务器信息 |
Content-Type | 响应体的内容类型 |
Content-Length | 响应的内容大小 |
Set-Cookie | 让客户端设置一个小票 |
如果需要在程序中设置自定义的响应头(不是预设的),建议使用 X-<Property-Name>
规则
7.2.3 响应体
这次请求服务端想要返回给客户端的数据正文,一般返回的都是 HTML,也可以返回 JavaScript 或者 CSS( 需要修改响应头中的响应类型 )
8. 响应状态码
状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值
- 1xx:指示信息 —— 表示请求已接收,继续处理
- 2xx:成功 —— 表示请求已被成功接收、理解、接受 ( 成功 )
- 3xx:重定向 —— 要完成请求必须进行更进一步的操作
- 4xx:客户端错误 —— 请求有语法错误或请求无法实现( 前后端都有可能出错,需要沟通 )
- 5xx:服务器端错误 —— 服务器未能实现合法的请求( 甩锅找后端 )
常见状态代码、状态描述的说明如下
- 200 OK:客户端请求成功
- 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized:请求未经授权,这个状态代码必须和
WWW-Authenticate
报头域一起使用 - 403 Forbidden:服务器收到请求,但是拒绝提供服务
- 404 Not Found:请求资源不存在,举个例子:输入了错误的URL( 最常见的 )
- 500 Internal Server Error:服务器发生不可预期的错误
- 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
9. 进程与线程
- 进程:是操作系统进行资源分配和调度的基本单元,可以申请和拥有计算机资源,进程是程序的基本执行实体
- 线程:是操作系统能够进行运算调度的最小单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务
- 关系:一个进程可以有多个线程,一个线程只能有一个进程,进程是爹、线程是儿
10. 串行、并行、并发
- 串行指的是js的同步与异步,同步代码在后也会把异步代码先执行
- 并行指的是多个任务同时进行
- 并发指的是先开启一个任务,之后会新加任务,这两个任务不会互相影响