http协议详解(一)

一 URL的概念

(1)URL:统一资源定位符。这意味着我们可以通过URL的方式去访问的资源(接口),URL是实现接口访问的第一步。
(2).URI::统一资源标识符。是一个抽象的概念,本身没有具体去实现

二 URL的构成

(1)protocol:协议:由通信双方对于通信过程中的数据,数据组织格式,规程,含义等等所作的约定。一般来说,按照TCP/IP模型,不同的层有不同的协议。接口测试一般来说是从应用层的协议着手去模拟实现接口请求和访问的。常见的应用层协议有http https(http+ssl) ssh ftp
(2)domain:域名:要访问的服务器的地址。可以是服务器的域名或ip地址,或机器名(一般是指局域网中的其中一个主机地址)
(3)port:端口号:服务器提供的用来监听客户端请求的;
如果服务器所设置的监听端口和其应用,采用的通信协议是默认的对应关系,则用户在通过URL来访问时,可以省略端口。常见的协议及其默认的通信端口对应关系:

协议默认端口
http80
https443或者8443
ftp21
ssh22
smtp25
pop3110
oracle1521
mysql3306
MS SQL1433

(4) path:路径,是要访问的资源在服务器的容器路径下的相对地址。一般来说,路径是要和访问的接口直接相关。
(5) url parameters:url参数,通常是以问号?作为连接符拼接在path之后。在很多工具中,url地址参数是直接划分在path中的。url地址参数是键值对应的,即key=value的格式,多个键值之间使用&作为连接符。

例子:https://write.qq.com/portal/article?page=1&content=%E5%86%9B%E4%BA%8B
协议:https
域名:write.qq.com
路径:portal/article
参数:page=1&content=%E5%86%9B%E4%BA%8B
PS:在很多工具中,url地址参数是直接划分在path中的

三 超文本传输协议http: HypeText Transfer Protocl

(1)http协议的特点:
1)http协议是一种基于request(请求)和response(响应)的协议。
简单来说:UI测试和接口测试有区别,UI测试需要设置等待时间,而http协议不需要设置等待时间,因为接口测试是走的协议,即当发送了请求后,必须收到服务器的响应了才会执行下一条语句;
2)http协议是一种简单,灵活的协议
3)http是一种快速的协议(曾经是,限制不是了)
http1.0及0.9版本,http协议默认是一种面向短连接的协议。
从http1.1开始,http协议默认是长连接的协议;
短连接:一个tcp连接上只能建立一个http连接,http结束之后,tcp连接也释放结束。
长连接模式:一个tcp连接上可以建立多个http连接,这个是通过信息头:Connection来实现的,即通对信息头的判断,判断是否全部的http都结束了,从而决定是否关闭底层的TCP连接。kepp-alive就表示长连接。
4)http是一种无状态的协议

四 http协议的详细构成

PS:对于抓取的数据最好用过raw和soure的视图模式去查看数据,这是原始的数据。
(1)http的详细构成:

http的构成用途
http requesthttp请求,影响的是脚本的实现
http response影响的是脚本的增强处理

(2)http request:http:由三部分构成:resquest line,request headers,request body.

http requset位置
requset line:请求行位于请求数据包的第一行内容

1)request line的结构
示例: GET /5aV1bjqh_Q23odCf/static/superman/img/topnav/newzhidao-da1cf444b0.png/ HTTP/1.1

http requset line参数具体意义
GETrequest method:请求方法;如果没有指定默认是get方法
5aV1bjqh_Q23odCf/static/superman/img/topnav/newzhidao-da1cf444b0.pngpath:路径
HTTP/1.1协议/版本号 protocol/version

常见的请求方法有:get , post , put , patch,delete,option,heder,trace等

2)request headers

http requset heads位置
request headers:请求头位于请求数据包的第二行到第一个空行之前的部分。
http requse heads功能
request headers:请求头从请求头是客户端和服务器用来和服务器进行通信信息。控制信息等,一般来说和业务逻辑无关(除了状态类的信息头)

信息头是键值对应的。信息头的类型是由协议规定的。不同的信息头具有不同的作用

信息头中如Accept-Encoding:gzip,deflate代表的意思就是可以压缩形式的数据。
对于接口测试而言,一般来说需要重点关注的信息头
[1]User-Agent:简称UA,是用来告知服务器,客户端的一些配置信息。服务器往往就是通过该信息头来判断“用户”是不是同一个用户。这个值本身没有太大的意义,主要作用就是在测试过程中判断用户是不是发生改变,从而确定接下来数据是否能正常传输。(一般UA是全局信息头。)
[2]Content-Tyoe:该信息头是客户端用来告知服务器,客户端向服务器发送的请求body中的数据的数据组织格式,需要和实际发送的数据类型也就是body保持一致。
[3]状态有关的头:token,author等

3)request body

http requset body位置
request body请求主体,是指从请求数据包中的第一个空行之后的所有内容。
http requset body功能
request body实际发送的主要信息(由post发送的数据一般位于请求主体中,请求主体中的数据,是由接口本身决定的。一旦请求主体有数据,则信息头中一定要指定Conttent-Type,否则会提示请检查你的cooki…)

总结一般来说:
{1}get方法发送的数据位于url地址参数,反之放在url地址参数中的数据,服务器认为是通过get方法发送的。
{2}post方法发送的数据一般位于request body中,并且一旦requset body中有数据,那么信息头中一定要指定Content -Type;并且请求体中的数据组织格式是由接口本身决定的。

以Jmet为例:一般来说抓包写接口
(1)添加一个空的cooki管理器
(2)添加一个全局信息头
(3)根据url配置http请求

(3)http response
http 响应,也是三个部分构成:response line ,response headrs,response dody
1)http response line

http requset line位置
http response line响应行位,位于响应数据包中的第一行。

示例:HTTP、1.1 200 ok

http response line参数具体意义
HTTPrequest protocol/vesion 协议/版本号
200response code :响应状态码(Status).是服务器用来告知客户端,服务器对于请求的处理状态,响应代码给出的只是通信层面的处理状态,具体的数据返回结果无法判断
protocol/version
具体的响应状态码代表的含义
1xx表示建立过程中双方的通信控制信息
2xx表示服务器处理成功
3xx表示重定向
4xx
5xx表示服务器错误

PS:一般来说1xx,2xx,3xx都表通信成功
对于接口测试脚本而言,一旦出现4xx,5xx都表示脚本不成功。绝大多数情况,都是脚本本身有错误。

2)http response heads
可能有一些服务器返回给客户端的状态信息需要关联处理

3)http response body

http requset body位置
http response body响应行位,位于响应数据包中的第一行。

响应主体:服务器对于请求的处理结果,要去判断请求是否成功,要去进行数据关联,一般都和数据主体有关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值