目录
1 http协议是什么(可参考计算机网络这本书)
1.1 协议
一种约定协议,一种客户端跟服务端之间的约定协议。(
协议有多层结构,常见高层协议如:TCP/IP负责点到点传送信息包
)
1.2 http协议
用于从万维网服务器传输超文本到本地浏览器的传送协议。
1.3 工作原理
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Nginx,Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息
2 http协议通信过程
(1)客户与服务器建立连接。
(2)客户向服务器提出请求。
(3)服务器接受请求,并根据请求返回相应的文件。
(4)客户与服务器关闭连接。
3 http报文
被传送的东西,也就是上述通信过程传递的东西。
3.1请求报文
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
3.2应答报文
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
4 请求方式
HTTP
协议中定义了
9
种方法
GET
、
POST
、
HEAD、
OPTIONS
、
PUT
、
PATCH
、
DELETE
、
TRACE
和
CONNECT
方法。其中
GET
、
POST
方法最为常用。
GET和POST的区别为:
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连。而POST方式是把提交的数据放在HTTP包的Body中
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制
- GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值
- GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码 (总之就是GET方式不安全!)
4.1 路由传参的区别
1、query携带参数
this.$router.push({
path:’/order’,
query:{
orduId:this.orduId
}
})
2、params携带参数
this.$router.push({
path:’/order/serviceRecord’,
params:{
orduId:this.orduId
}
})
3、二者区别
params 和 命名路由的name 一起使用 并且页面刷新时参数也会消失
query 和 路由地址 path 一起使用,页面刷新不会丢掉参数
(由此可见我个人更偏向于query传参)
4、参数接收
this.$route.query.参数名称
this.$route.params.参数名称
!!!特别注意:传参时用的是 $router 接收参数时用的是 $route
4.2 get和post请求方式的封装
setParams (param) {
let pStr = ”
for (var p in param) {
if (param[p] === undefined) { continue }
let pstrs = param[p] === null ? ” : param[p]
pStr += ‘&’ + p + ‘=’ + pstrs
}
return pStr.substr(1)
}
这样在传入参数时只需要调用这个方法传入相应的值就可以啦~.~
4.3 常用请求头信息
Accept
: 可接受的响应内容类型(Content-Types)
Cookie
: 由之前服务器通过Set-Cooki设置的一个HTTP协议Cookie
Content-Type
: 请求体的 MIME 类型 (用于 POST 和 PUT 请求中)
Date
: 发送该消息的日期和时间(以 RFC 7231 中定义的”HTTP 日期”格式来发送)
Expect
: 表示客户端要求服务器做出特定的行为
From
: 发起此请求的用户的邮件地址
Host
: 表示服务器的域名以及服务器所监听的端口号。如果所请求的端口是对应的服务的标准端口(80),则端口号可以省略。
Origin
: 发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加入一个 Access-Control-Allow-Origin 的消息头,表示访问控制所允许的来源)。
5 Http状态码
- 200 – 请求成功
- 400 – 客户端请求的语法错误,服务器无法理解
- 404 – 请求的资源(网页等)不存在
- 500 – 内部服务器错误
- 504 – 请求方式错误
5.1 状态码分类
分类 | 分类描述 |
---|---|
1** | 提示信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
6 C/S、B/S架构
相信近期写论文的童鞋们也会涉及到这两个问题
C/S结构(
服务器/客户机模式
)C/S结构通常采取两层结构。
- 将应用程序分为客户端和服务器端两层,客户端程序用于展示功能,为用户提供操作界 面,同时也可以进行业务逻辑的处理;而服务器端程序负责操作数据库完成数据处理等 核心业务
- 由此可见通过C/S开发模型开发的应用程序,客户端程序可以承担一部分业务逻辑处 理,特别是数据的预处理工作,减轻了服务器端程序的压力
B/S结构(
浏览器/服务器模式
)这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。
- 不需要安装客户端
- 开发人员只需要对服务器端程序进行开发、维护,降低开发维护难度和开发维护成本
- 浏览器主要负责用户界面的动态展示,只处理一些简单的逻辑功能
- 所有具体业务逻辑的处理都由服务器端程序完成,所以程序负载几乎都转移给服务器端
- 但是随着服务器负载的增加,可以平滑地增加服务器的个数并建立集群服务器系统,然 后在各个服务器之间做负载均衡