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


    在这里插入图片描述

    HTTP协议工作原理

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

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

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

      例: 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=/
      
      • 1
      • 2
      • 3
    • session:

      服务器:xampp\tmp\sess_95a62731cc495698075a3db9dc42b266

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

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

  • 相关阅读:
    Python按类别和比例从Labelme数据集中划分出训练数据集和测试数据集
    猿创征文|一个网站的完整部署流程
    Microsoft Dynamics 365 CE 扩展定制 - 8. DevOps
    关系数据库与文档数据库对比
    学习笔记-.net安全越权
    09 模型的增删查改《ThinkPHP6 入门到电商实战》
    【Java程序员面试专栏 专业技能篇】Java SE核心面试指引(二):面向对象思想
    一个优秀的软件测试工程师该如何进行需求分析
    xxl-job架构原理讲解
    头歌计算机组成原理汉字字库存储芯片扩展实验
  • 原文地址:https://blog.csdn.net/a883774913/article/details/125424242