HTTP知识2
HTTP协议的特点
HTTP的构成详解
http request:
http response:
HTTP协议的特点
-
HTTP协议是一种基于request(请求)和response(响应)的协议
-
HTTP协议是一种灵活、简单的协议(文本、音频、视频。。。)
-
HTTP协议是一种快速的,无连接的协议。(上一篇博客)
http1.0及之前,http协议默认是无连接的,也叫短连接的。
http1.1之后,http协议默认是长连接的。
标识:通过信息头Connection来设置。(信息头是什么?)
长连接:keep-alive
短连接:是指一个TCP连接上只会建立一个HTTP连接,http连接结束,则TCP连接也结束。
长连接:是指一个TCP连接之上可以建立多个HTTP连接,用于多个HTTP资源的请求。
-
HTTP协议是一种无状态的协议
本身只用于资源共享,后续为了维持状态,引入了session和cookie机制。
HTTP的构成详解
http协议是由http request 和http response两部分构成
http request : http请求,是客户端发送给服务器的
http response : http响应,是服务器返回给客户端的
http request:
一般来说,http request包含三个部分:
request line:请求行
request headers:请求头
request body:请求主体
request line:请求行,是指请求数据包中第一行的内容。
示例:GET/phpwind/HTTP/1.1
请求行包含的信息为:
request method:请求方法
request path:请求路径
protocol/version:协议/版本
request method:【任何一个http请求都必须有请求方 法, 如果没有,则默认使用get方法。(ps:常见的请求方法有get\post\put\patch\delete\options\trance 等)接口使用何种请求方法,都是由接口本身决定,或者说是由设计和开发决定。对 于测试来说,我们只能通过抓包或者接口文档来确认测试的接口所采用的请求方法。
get和post方法的相同和不同:
1、 get和post都是请求方法,都可以用来向服务器发送数据
2、 get方法发送数据时,数据默认是位于URL地址参数部分的
post方法发送数据时。数据默认是位于request body(请求主体)中的
3、 因为浏览器和服务器对于URL地址长度的限制,在web应用要发送大量
数据给服务器时,不推荐使用get方法。
4、 get方法请求获取到的响应在客户端默认是缓存的,而post方法获取的
响应是不缓存的。这就导致post方法比get方法更加安全】
request headers:请求头
** 是指从请求数据包的第二行开始到第一个空截止的部分**
请求头是客户端用来告知服务器的一些通信控制、交互信息,一般和业务本身无关。
请求头是键值对应的,格式为:
请求头名称:请求头的值
标准的请求头都是有其特殊的含义和作用的。具体的使用还是以代码为准。
对于接口测试而言,比较重要的请求头有:
User-Agent:简称UA,是客户端用来告知服务器,客户端的一些信息的。服务器通常会根据该请求头来判断请求的来源是否一致。
(ps:有一些接口工具是默认会生成UA头的,但是建议替换为实际的抓包所获取到的值。一般US作为全局请求头所有请求保持一致。)
Accept-Encoding:客户端用来告知服务器,客户端是否支持压缩。对于服务器支持压缩的接口来说,该请求头会影响最终的性能测试的结果,对于接口的测试没有影响。
Content-Type:如果request body中有数据,则一定要考虑Content-Typ请求头。要确保Content-Type和实际的request body中的数据组织格式保持一致。
【PS:所测试的接口实际使用的Content-Type以抓包或者接口文档为准。】
{常见的Content-Type有:
application/x-www-form-urlencoded 普通的键值对格式
application/json json格式
multipart/form-data; boundary=xxx 多用于包含文件上传功能的接口,混合表单格式。}
cookie、token、author等和状态有关的请求头
【PS:cookie有些工具是直接支持,不需要做额外处理,token和author一般都需要进行关联处理】
request body:请求主体,
是指请求数据包中从第一个空行开始到结尾的所有内容。
请求主体是发送给服务器端的业务数据
请求主体的数据组织格式是由接口本身决定的
请求主体有值,则一定要保证请求头Content-Type的值和主题数据的组织格式的一致性。
http response:
即http 响应,也是分为三个部分:
response line 响应行
response headers 响应头
response body 响应主体
response line 响应行
是指响应数据包中第一行的内容
示例:HTTP/1.1 200 OK
包含以下信息:
protocol/version
response code:响应代码,又叫状态码(status),是服务器用来告知客户端,服务器对请求的处理状态
响应代码是三位长度数字,由首位数字的不同,大致可分为五类:
1xx:表示连接建立过程的通信、控制、交互信息。
2xx:表示请求处理成功,典型的就是200
3xx:表示重定向(什么是重定向?)
4xx:表示客户端错误
400 请求方法错误
401 权限
403 权限
404 资源未找到
5xx:表示服务器端错误。
【PS:1xx,2xx,3xx都表示请求成功,4xx,5xx都表示请求失败
状态码仅仅是表示服务器对于请求的逻辑处理(通信)结果,和实际的业务处理结果无关。
一般来说,在调试接口测试脚本的过程中,一旦出现4xx和5xx错误,在排除服务器宕机的情况下,都是脚本本身处理有误导致。】
response message:响应信息,
是用来描述响应代码的,没有任何意义
response hesders:响应头,
是指响应数据包从第二行开始到第一个空行截止的部分。作用格式类似于请求头,区别在于是服务器返回给客户端的。
response body:响应主体,
是指响应数据包中从第一个空行开始到结尾的所有内容。
一般来说,响应主体是服务器应用对于请求处理的结果,这就意味着业务相关的数据绝大多数都是在响应主体中返回。
通常来说,我们要做关联、断言等操作都是针对响应主体的。(关联,断言是什么?)