前后端通信
-
短链接 ajax/fetch
-
客户端不发送数据给服务端,服务端发送回数据给客户端,断开连接
-
客户端发送数据给服务端,服务端不返回数据(基本不存在),断开连接
-
客户端发送数据给服务端,服务端返回数据给客户端,断开连接
-
长链接 socket
-
客户端和服务端建立了连接关系,然后不断开
-
当需要时,客户端会发送给服务端消息,服务端可能会返回数据,也可能不返回数据
-
服务端有时候会主动广播给客户端消息
-
短链接中get和post
-
通信需要的内容
-
发送的协议 http:
-
发送的IP地址和端口号 121.89.205.189:3001
-
发送的路由 /api/user/info
-
发送的方式 GET/POST/PUT/DELETE
-
发送的数据结构类型 query字符串(a=1&b=2&c=3)/JSON字符串({"a":1,"b":2})/formData / 二进制
流数据类型 /Document文档类型(HTML类型或者XML类型)/Blob类型(大二进制流类型,上传的文件)
-
发送的数据 具体的数据内容
-
请求头的数据 请求头的数据内容
-
响应头的数据 服务端返回给前端的响应头数据内容(很少接口文档有)
-
响应的数据结构类型 给出具体服务器返回响应数据结构
-
响应的数据 服务端返回给客户端的数据
GET 获取
-
一般来说get不会向服务端发送大量数据,一般会携带一些简单或者公开的信息
-
GET发送时数据会被放在地址的后面用?后面写入query格式的字符
-
服务端收到get请求的消息后,会将数据返回给客户端
-
如果当前的get地址在前面有访问过,地址相同参数相同的情况下,则浏览器会自动不发送给服务端而直接从浏览器的缓存中
-
获取上次服务端发送来的数据
-
强缓存 当第一次访问服务端时,服务端返回的数据中在响应头中设置了强缓存时间,在这个强缓存时间内,所有这个请求都会自动从缓存中获取,而不会再次访问服务器
-
协商缓存 当第一次访问服务端时,服务端返回的数据中在响应头上设置了一个该数据的最后修改时间,当下次访问该地址时,会在请求头携带
-
上次响应头得到的该数据的最后修改数据,服务器在收到响应头,根据请求头发送的这个最后修改数据时间和当前的数据作对比,如果时间一致
-
则强制客户端读取缓存,如果不一致则发送新的消息给客户端
POST 邮递
- POST一定不会读取缓存
- post发送时也可以通过地址中search携带部分的数据,也可以通过post直接提交数据给服务端
- get一般参数写在地址中,不能过长,而且是公开的,可以看到,部分浏览器只有一次请求就是url的请求
- post发送数据是是不公开的,地址栏中看不到数据 部分浏览器有两次请求,第一次请求是url请求,第二次是数据发送的请求
- PUT 当有的数据消息需要前端告知服务端这个消息目的是推送放入到数据库中,可以使用PUT告知服务端
- DELETE 当有的数据消息需要前端告知服务端这个消息目的是需要从数据库删除,可以使用DELETE告知服务端