Http传输协议(包含对get和post请求的封装)

  • Post author:
  • Post category:其他



目录


1 http协议是什么(可参考计算机网络这本书)


1.1 协议


1.2 http协议


1.3 工作原理


2 http协议通信过程


3 http报文


3.1请求报文


3.2应答报文


4 请求方式


4.1 路由传参的区别


4.2 get和post请求方式的封装


4.3 常用请求头信息


5 Http状态码


5.1 状态码分类


6 C/S、B/S架构

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结构(

浏览器/服务器模式

)这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。

  • 不需要安装客户端
  • 开发人员只需要对服务器端程序进行开发、维护,降低开发维护难度和开发维护成本
  • 浏览器主要负责用户界面的动态展示,只处理一些简单的逻辑功能
  • 所有具体业务逻辑的处理都由服务器端程序完成,所以程序负载几乎都转移给服务器端
  • 但是随着服务器负载的增加,可以平滑地增加服务器的个数并建立集群服务器系统,然 后在各个服务器之间做负载均衡



版权声明:本文为weixin_44409569原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。