Http 基础详解

URL:统一资源定位符。

https://www.csdn.net/article/

https://zhidao.baidu.com/search?ct=17&pn=0&tn=ikaslist&rn=10&fr=wwwt&word=csdn

都是URL地址


一个URL地址通常是由五个部分构成:
·协议:一般来说,URL地址中的一个冒号之前的就是协议。
协议就是通信双方对于通信的数据的格式、规程和含义的一种约定。
比如说,常用的就是http协议。
除了http协议,常见的应用层的协议有:
https(http+ssl)
ftp
ssh
pop3
smtp


·域名:就是要访问的服务器的名称或者地址,表现形式为:域名或者IP地址。
域名可能是虚拟的,也可能是真实机器的机器名。
www.baidu.com
www.qq.com
这些都是域名。


一般来说,我们要访问的网站(资源)都是存放在服务器上的。


·端口:是由服务器的服务(apache、IIS、tomcat等服务器产品)所提供的监听端口,是用来监听客户端的请求的。
一般来说,服务器所提供的服务端口都是采用的默认端口。
所谓默认端口是一些协议约定俗成所采用的,可以在服务器端进行修改。
常见的协议和其对应的默认端口。
http 80
ssl 443or8443
ftp 21
ssh 22
smtp 25
pop3 110

oracle 1521
mysql 3306
sql server 1433
PS:如果采用的是默认端口,则我们在访问的时候可以不写。


·路径:端口之后的部分,是用来描述要访问的资源在服务器容器下的路径。
一般来说,我们所谓的路径是不会包含URL地址参数的。
但是在很多工具中,URL地址参数是可以看作是路径的一部分的。

·URL地址参数:一般来说是以问号"?"作为连接符,以键值对的方式来组织数据,以&作为不同键值的连接符。
一般表示客户端提交给服务器的参数。
示例:
keyword=phpwind&type=thread







·HTTP协议解析:
一般来说,不论是抓包、使用接口测试工具封包,还是阅读理解接口文档,都是要基于协议来进行的。


http协议的特点:
·http协议是一种基于请求(request)和响应(response)的协议。
·http协议是一种简单快速的协议。
·http协议是一种无连接的协议。
       http1.0及以前是无连接的协议,即一个http连接完成,底层的tcp连接也会关闭。
       http1.1开始是一种长连接的协议。一个tcp连接上可以建立多个http连接,实现多个http资源的传输。
       对应的标志体现在信息头:Connection:keep-alive


·http协议是一种无状态的协议。
本质上,http协议自身是无状态的。
在之后,随着应用的需要,相关的技术就被提出,比如说session、cookie、token等的出现都是为了去实现状态的记录。
本质上都是实现“数据”的交互。




·http协议详解:
http协议是由两个部分构成的:http request、http response


·http request:http请求,一般来说是由三个部分构成:request line、request header、request body
·request line:一般来说就是指抓到的请求包的第一行的内容,包含以下信息:
request method、request path、protocol/version
示例:
GET /phpwind/ HTTP/1.1
POST /phpwind/login.php HTTP/1.1
·request method:请求方法,一般来说,使用http协议进行通信的时候,可以指定http协议所提供的方法,如果不指定,则默认使用的是GET方法。
常见的http请求方法有:get、post。
对于get来说,数据一般都是以URL地址参数的形式来组织的。
对于post来说,数据一般都是位于request body的。
如果采用的是post方法,如果是普通的键值对的数据,则不需要指定数据格式。而其他类型的数据,则一定要通过信息头:Content-type来指定对应的数据格式:
常见的有:text/xml,application/xml,application/json
PS:至于具体是何种数据类型,是由产品本身决定的。




·request path:就是URL的path部分。
这个一般直观的反应了业务操作、业务步骤。


·protocol/version:协议/版本。


·request header:是指从第二行开始到第一个空行的部分。
请求头的作用:是客户端用来和服务器实现通信(一般是逻辑层面的),用来传递控制信息的。
请求头都是键值对应的:
格式为:请求头名称(类型):值
请求头的名称(类型)是由HTTP协议规定的,都具有特殊的含义,一般是不允许自定义的。
常见的有:
·User-Agent:告诉服务器,客户端的环境。
·Accept-Encoding:告知服务器,客户端支持的压缩格式。
一般来说,不指定这个信息头,服务器是不会做压缩的。


·Cookie:cookie一般都是通过Cookie信息头封装在请求的信息头部分的。


·Content-Type:用来告知服务器,所发送的请求主体的数据类型(数据组织格式)。
如果是POST方法,则建议一定指定该信息头。




·request body:是指第一个空行之后的所有内容。
一般来说就是由客户端提交给服务器的请求内容。
通常来说,get方法是不会存在的。


通常来说,各种抓包工具都会尝试帮我们去解析请求数据,并且显示为键值对方式。
但是对于封包来说,我们需要的往往是原始的数据。
原始数据一般的关键字为:raw或者source




PS:以上内容将直接影响到接口脚本的生成。




·http response:http响应,一般来说也是由三个部分构成:response line、response header、response body
·response line:响应行,是指响应中的第一行的内容。一般来说包含以下内容:
protocol/version response code response message
示例:HTTP/1.1 200 OK
·response code:响应代码,又叫状态码。是服务器用来告知客户端,服务器对于请求的处理状态的。
一般来说,状态码都是三位长度的数字,根据首位数字的不同,大致可以分为以下几类:
1xx:一般是在通信过程中出现(抓包工具一般无法捕获),用来实现通信控制的。
2xx:表示成功。典型常见的就是200.
3xx:表示重定向,常见的300--307.
PS:以上三种一般都表示客户端和服务器的通信从逻辑层面来说是没有问题的。


4xx:表示客户端错误。
常见的有:403 权限相关的。
  404 表示资源未找到。
5xx:表示服务器错误。
常见的有:
500


PS:一般来说,在接口测试和性能测试的脚本实现阶段,出现4XX或者5xx错误,往往都是脚本自身的问题。


·response message:响应信息,是用来描述响应代码的。




·response header:响应头,和请求头对应的。一般表示服务器希望传递给客户端的一些控制信息。
cookie的传递一般就是以该方式为主。



·response body:响应主体,即服务器响应给客户端的源代码。
最终客户端都是拿到源代码,进行解析(解压,解密),执行HTML、css、js代码等,最终呈现给用户一个可视化的界面(网页)。

PS:一般来说,接口测试或者性能测试过程中,我们需要直接对源代码进行断言操作,从而来判断业务是否成功。


断言:就是由用户告知代码,所预期得到的结果。










文章来源: 动脑学院

































































































































































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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值