接口自动化测试 之 HTTP协议篇

本文详细解读HTTP协议工作原理,包括URL地址解析、GET与POST请求区别,以及状态请求码。同时介绍cookie与session在保持状态中的作用。

在这里插入图片描述

HTTP协议工作原理

我们来解析一下从百度输入信息后,百度返回数据给我们的一个过程来帮助大家理解HTTP协议工作的具体原理:

-  1、浏览器中输入URL地址
-   2、解析URL地址为IP地址
-   3、发送资源请求【<https://www.baidu.com/> Request Method:GET】往-服务器上
-   4、根据请求获取资源【/根路径】【文本数据、图片、视频等流媒体】
-   5、服务器返回资源给客户端/用户/浏览器
-   6、浏览器渲染引擎处理返回的数据为美丽的画面

从以上信息中我们可以大概的将过程拆分成这样:

URL地址–>解析URL–>发请求–>获取响应–>渲染


URL地址解析

  • URL:

在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址。

  • URI:

在电脑术语中,统一资源标识符(Uniform Resource Identifier,URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。

  • 简单的URL 由 3 部分构成:协议、主机名、资源路径名

    例: https://www.baidu.com/

    协议:https
    
    主机名:[www.baidu.com](http://www.baidu.com)
    
    资源路径:/
    
  • 协议类型 😕/主机名 资源路径?请求参数【URL编码:请求参数—GET请求】

    例: https://www.jianshu.com/go-wild?ac=2&url=http%3A%2F%2Frobotframework.org%2Fr0.obotframework%2F2.7.2%2FRobotFrameworkUserGuide.html%23id379

    协议类型:https
    
    主机名:[www.jianshu.com](http://www.jianshu.com)
    
    资源路径:/go-wild
    
    请求参数:[ac=2&url=http%3A%2F%2Frobotframework.org%2Frobotframework%2F2.7.2%2FRobotFrameworkUserGuide.html%23id379](https://www.jianshu.com/go-wild?ac=2&url=http://robotframework.org/robotframework/2.7.2/RobotFrameworkUserGuide.html#id379)
    
  • 锚地址 (#)

    锚就是在文档中设置位置标记,并给该位置一个名称,以便引用。通过创建锚点,可以使链接指向当前文档或不同文档中的指定位置。锚点常常被用来跳转到特定的主题或文档的顶部,使访问者能够快速浏览到选定的位置,加快信息检索速度。

    例: http://robotframework.org/robotframework/2.7.2/RobotFrameworkUserGuide.html#test-execution

    锚地址:#test-execution

  • 补充:

    • web服务器:常用服务器为 Apache服务器 端口:80

    • php应用 :常用服务器为tomact服务器 端口:8080


http协议特点

  • 1、支持客户/服务器模式

  • 2、简单快速

    客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST、HEAD、PUT、DELETE等。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

  • 3、灵活

    HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

  • 4、无连接

    无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。可以设置Connection:keep-alive 保存TCP连接。后面如果还要用到这个连接不会每次都新建连接

  • 5、无状态

    HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量増大。另一方面,在服务器不需要先前信息时它的应答就较快。

  • 6、明文传输

    HTTP协议不支持加密处理,所以在安全性方面是一大硬伤。目前解决这一安全问题的方法是使用Https协议(基于HTTP+SSL协议)的一种安全传输方案。


常用的请求方法

  • GET请求:客户端从服务器上获取资源

GET:http://192.168.200.148:8081/agileone/index.php

GET:http://192.168.200.148:8081/oa/index.php?m=login&a=index

【可以含有请求参数m=login&a=index,数据存放在URL中,存储空间有限制,但速度更快,1个TCP数据包headers】

  • POST请求 : 客户端向服务器提交数据

    POST:http://192.168.200.148:8081/agileone/index.php/common/login

    【可以含有请求参数】 headers:Content-Type:application/x-www-form-urlencoded body数据:username=admin&password=admin&savelogin=true

    【含有请求正文,数据存放在body/请求正文中,存储空间没有限制,稍慢,2个TCP数据包headers body】

  • HEAD请求 :用于获取头部信息,没有响应体,类似于GET

  • PUT请求 :用于更新信息,从客户端向服务器传送的数据取代指定的文档的内容

  • DELETE请求:请求服务器删除指定的页面

  • CONNECT请求:协议中预留给能够将连接改为管道方式的代理服务器

  • OPTIONS请求:允许客户端查看服务器的性能

  • TRACE请求:回显服务器收到的请求,主要用于测试或诊断

  • RESTFUL接口规范:GET POST PUT DELETE /notices

GET请求与POST请求的区别

  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  • GET请求只能进行url编码,而POST支持多种编码方式。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET请求在URL中传送的参数是有长度限制的,而POST没有。
  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  • GET参数通过URL传递,POST放在Request body中。
  • GET产生一个TCP数据包;POST产生两个TCP数据包。
  • GET比POST性能好,更快、

状态请求码

常见的状态码及状态码含义:

  • 1**,

    例子 100,continue,信息,服务器收到请求,需要请求者继续执行操作

  • 2** ,

    例子200 ok 请求处理成功,成功,操作被成功接收并处理

  • 3**,

    例子302 found ,重定向,需要进一步的操作以完成请求

  • 4**,

    例子404 not found,客户端错误,请求包含语法错误或无法完成请求

  • 5**,

    例子500,server error,服务器错误,服务器在处理请求的过程中发生了错误

cookie与session

  • cookie与session存在的理由?

    解决HTTP协议无状态问题

  • cookie:存放在客户端的保持状态的一种方式

  • session:存放在服务器的保持状态的一种方式

  • cookie:

    请求头:Cookie:PHPSESSID=95a62731cc495698075a3db9dc42b266

    响应头:

       Set-Cookie:username=admin; expires=Thu, 23-Sep-2021 06:25:06 GMT; path=/
    
       Set-Cookie:password=admin; expires=Thu, 23-Sep-2021 06:25:06 GMT; path=/
    
  • session:

    服务器:xampp\tmp\sess_95a62731cc495698075a3db9dc42b266

  • 保持状态:cookie:获取sessionID ,去服务器查询session文件,检查用户的信息中登录状态是否为true,是,保持登录状态,否则非登录状态。

  • 补充:token:解决分布式服务的会话共享问题。通常含有:有效期 客户端ID 用户认证 服务器推送给客户端,客户端发请求需要带上token请求成功。app token

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佛系的老肖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值