URL&HTTP协议详解

2023-05-16

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

一、URL

URL是实现接口访问的第一步,一般来说,一个URL是分为五个部分。
protocol、domain、port、path、url parameters
示例:
https://www.bilibili.com/video/BV1sE411H7tV?p=1

  • protocol:协议,就是指url中://之前的部分。

    • 协议:是指通信双方对于通信过程中的数据、数据组织格式、规程、含义等等所作的约定。
    • 一般来说,按照TCP/IP模型,不同的层有不同的协议。
    • 接口测试一般来说是从应用层的协议着手去模拟实现接口请求和访问的。
    • 常见的应用层的协议有:
      • http
      • https http+ssl
      • ssh
      • ftp
      • smtp
      • pop3
      • mysql
      • oracle
      • MS SQL
  • domain:域名,是指要访问的服务器的地址。可以是服务器的域名,ip地址,机器名。

  • port:端口,是由服务器提供的,用来监听客户端的请求。

    • 格式:domain:port。

    • 如果服务器所设置的监听端口和其应用所采用的通信协议是默认的对应关系,则用户在通过URL来访问时,可以省略端口。

    • 常见的协议及其默认的通信端口对应关系:

      • http 80
      • https 443 or 8443
      • ftp 21
      • ssh 22
      • smtp 25
      • pop3 110
      • oracle 1521
      • mysql 3306
      • MS SQL 1433
  • path:路径,是要访问的资源在服务器的容器路径下的相对地址。

    • 一般来说,路径是和要访问的接口直接相关。
  • URL parameters:URL地址参数,通常是以问号?作为连接符拼接在path之后。

    • 在很多工具中,url地址参数是直接划分在path中的。
    • url地址参数是键值对应的,即key=value的格式,多个键值之间使用&作为连接符。

二、HTTP协议

2.1HTTP

  • http协议详解:http协议叫HypeText Transfer Protocol,超文本传输协议。
  • http协议的特点:
    • http协议是一种基于request(请求)和response(响应)的协议。
    • http协议是一种简单、灵活的协议。
    • http协议是一种快速的协议。
      • http1.0及0.9版本,http协议默认是一种面向短连接的协议。
      • http1.1开始,http协议默认是一种面向长连接的协议。
      • 短连接:一个tcp连接上只能建立一个http连接,http结束之后,tcp连接也释放结束。
      • 长连接:一个tcp连接上可以建立多个http连接。
        • 这个是通过信息头:Connection来实现的。keep-alive就表示是长连接。
    • http协议是一种无状态的协议。
  • http协议的详细构成:
    • http协议包含两个部分:http request、http response。
      • http request:http请求,影响的是脚本的实现。
      • http response:http响应,影响的是脚本的增强处理

​ 抓包工具很多,但是从实现接口测试的角度来说,我们去查看所抓取的数据包,建议大家通过raw或者source的视图模式去查看数据。
​ 不要用抓包工具所提供的各种数据解析视图去看。

2.2HTTP Request

  • http request:是由三个部分构成:request lin、request headers、 request body。

  • request line:请求行,是指请求数据包中的第一行内容,
    示例:GET /phpwind/ HTTP/1.1

    • 通常包含以下信息:
      request method、 request path、 protocol/version
    • request method:请求方法,所有的http请求都必须指定请求方法,如果没有指定,则默认使用get方法。
      • 常见的请求方法有:get、post、put、patch、delete、options、header、trace等。
      • 请求方法具体使用哪种,不是测试人员决定的,而是由接口本身决定。
        • 接口文档
        • 抓包
    • request path:请求路径,就是指URL中的path和url地址参数两个部分。
    • protocol/version:协议/版本。
  • request headers:请求头,是指从请求数据包中的第二行到第一个空行之前的部分。

    • 请求头是客户端用来和服务器进行通信信息、控制信息等交互的。
    • 一般来说和业务逻辑无关(除了状态类的信息头)。
    • 信息头是键值对应的。
    • 信息头的类型是由协议规定的,不同的信息头具有不同的作用。
    • 对于接口测试而言,一般来说需要重点关注的信息头有:
      • User-Agent:简称UA,是客户端用来告知服务器,客户端的一些配置信息。服务器往往就是通过该信息头来判断“用户”是不是同一个用户。一般作为全局信息头使用。
      • Content-Type:该信息头是客户端用来告知服务器,客户端向服务器所发送的请求body中的数据的数据组织格式。
        • Content-Type的值要求和实际发送的数据格式保持一致。
    • 状态有关的头:
      • token
      • author
  • request body:请求主体,是指从请求数据包中的第一个空行之后的所有内容。

    • 一般来说,get方法发送的数据位于url地址参数,反之放在url地址参数中的数据,服务器认为是通过get方法发送的。
    • post方法发送的数据一般是位于请求主体中。
    • 请求主体中的数据组织格式是由接口本身决定的。一旦请求主体有数据,则信息头中一定要指定Content-Type。

2.3HTTP Response

  • http response:http响应,也是由三个部分构成:response line、response headers、response body

  • response line:响应行,是指响应数据包中的第一行内容。
    示例:HTTP/1.1 200 OK

    • 包含以下信息:
      protocol/version、response code、response message。

    • response code:响应代码,又叫状态码(Status)。是服务器用来告知客户端,服务器对于请求的处理状态。

      • 响应代码给出的只是通信层面的处理状态。

      • 业务的成功是建立在通信成功的基础之上。

      • 状态码是三位长度的数字,根据首位数字不同,可以分为5类:

        • 1xx:表示连接建立过程中双方的通信控制信息。

        • 2xx:表示服务器处理成功。

        • 3xx:表示重定向。

        • 一般来说,1xx、2xx、3xx都表示通信是成功的。

        • 4xx:表示客户端错误。

        • 5xx:表示服务器错误。

        • 对于接口测试脚本而言,一旦出现4xx、5xx都表示脚本不成功。而且绝大多数情况下,都是脚本本身数据组装有误导致。

  • response headers:响应头,是服务器返回给客户端的。

    • 可能会有服务器返回的一些状态有关的信息头需要关联处理。
  • response body:响应主体,是指响应数据包中的第一个空行之后的所有内容。

    • 响应主体就是服务器对于请求的处理结果。
    • 要去判断请求是否成功,要去进行数据关联,很多时候都是和响应主体。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

URL&HTTP协议详解 的相关文章

随机推荐

  • Ubuntu下安装和使用wireshark

    用 Ubuntu Software Center安装 wireshark还是很容易的 xff0c 在教育网下使用 ipv6的软件源速度也很好 但是安装完后如果不进行任何设置的话 xff0c wireshark还是不能使用 这时打开 wire
  • IIS下配置php运行环境。

    1 首先到php官网上下载php http php net downloads php 版本根据自己的需要定 我用的是Current Stable PHP 7 2 6 xff0c 因为是windowns系统所以点击 Windows down
  • Debian 9 Stretch国内常用镜像源

    1 使用说明 一般情况下 xff0c 修改 etc apt sources list文件 xff0c 将Debian的默认源地址改成新的地址即可 xff0c 比如将http deb debian org改成https mirrors xxx
  • linux环境配置sonarqube

    1 下载解压sonarqube 1 xff09 用MobaXterm连接linux服务器 之前用过xshell xff0c 第一次用mobaxterm xff0c 觉得还是比较好用的 xff0c 左侧可以看到linux文件目录 2 xff0
  • proxmox从6.0升级到6.3

    作者 xff1a 吴业亮 博客 xff1a wuyeliang blog csdn net 删除企业源 rm rf etc apt sources list d pve enterprise list 下载秘钥 wget http mirr
  • ubuntu下qt安装以及环境搭建

    1 下载https download qt io archive qt 2 chmod 43 x qt opensource linux x64 5 14 2 run 3 sudo qt opensource linux x64 5 14
  • ProxmoxVE 之集群安装&ceph集成(引用不加图)

    上次找了一台物理服务器直接安装了一个proxmox VE 环境 xff08 VE是虚拟化环境的意思 xff09 xff0c 后续又看了官方的admin文档 xff0c 对整个系统架构有了一定的了解 xff0c 接下来 xff0c 准备好好研
  • ubuntu安装配置squid进行代理

    前段时间 xff0c 在ubuntu下安装了squid xff0c 进行代理测试 xff0c 现将方法记录如下 xff1a 一 实验环境 两台虚拟机 xff0c 一台为ubuntu xff0c 一台为windows xp 其中 xff0c
  • dos中的变量

    1 0 9 用于获取命令行的参数 2 i用在命令行中的for语句 3 i用在脚本文件中的for语句 4 var 立即扩展变量var的值 5 xff01 var xff01 延迟扩展变量的值 xff08 提前设置 setlocal enabl
  • IDEA实用插件之Spring Assistant——可视化构建SpringBoot项目(社区版专用)

    应用场景 社区版的idea中无法创建spring boot应用 xff0c 旗舰版不存在这方面的问题 社区版要实现创建SpringBoot项目 xff0c 一个途径是通过Spring的官网 xff0c 网页版的spring initiali
  • vue-element-plus-admin整合后端实战——实现系统登录、缓存用户数据、实现动态路由

    目标 整合vue element plus admin前端框架 xff0c 作为开发平台的前端 准备工作 前端选用vue element plus admin xff0c 地址 https gitee com kailong11012013
  • linux下 有线和无线同时工作

    又要使用公司内网收邮件 xff0c 又要使用wifi上外网 为了这个问题 xff0c 百度了下 xff0c 都是抄来抄去的文章 xff0c 好烦 解决方法 xff0c 就是使用route命令 xff0c 修改静态路由表 方法 xff1a 1
  • MySQL监控告警及可视化:Zabbix+Percona PMP实现(Part II)

    MySQL监控告警及可视化 xff1a Zabbix 43 Percona PMP实现 xff08 Part II xff09 PMP插件安装PMP监控脚本配置Web界面导入PMP模板 服务器清单如下 xff1a 服务器IP配置OS版本服务
  • 引用远程资源库中不存在的jar包,相关问题及解决方案

    问题背景 项目中需要用到远程资源库中不存在的jar包 xff0c 将jar包放在项目目录下 xff0c 并用 lt systemPath gt 的方式引用 xff0c windows系统本地调试的时候没问题 xff0c 部署到Linux能成
  • 彻底解决 error: Unable to find vcvarsall.bat

    1 windows上做Python开发 xff0c 搭环境还真不比Linux容易 error Unable to find vcvarsall bat这个错误眼熟吧 xff1f 凡是安装和操作系统底层密切相关的Python扩展 xff0c
  • ubuntu下解决微信不能发送图片的问题

    安装sudo apt install libjpeg62 i386 xff0c 可以解决ubuntu下不能发送微信截图的问题
  • dpkg安装deb缺少依赖包的解决方法--Ubuntu 16.04 LTS 安装网易云音乐

    一 去网易云音乐官网下载对应的安装包 我下载的是netease cloud music 1 0 0 2 amd64 ubuntu16 04 deb 二 开始安装 sudo dpkg span class hljs attribute i s
  • 个人号微信机器人API接口

    发送APP类消息 和发送小程序是同一个接口 xff0c 此接口可发送xml中包含appmsg的消息 xff0c 例如 xff1a 短视频 xff0c 直播 xff0c 音乐 xff0c 第三方APP等 请求URL xff1a http 域名
  • Fiddler抓包(下载安装及使用)

    一 下载安装 1 下载 官网链接 xff1a https www telerik com Fiddler Classic xff08 经典版 xff09 xff0c 这个版本是免费的 xff0c 不过只能在Windows上使用 Fiddle
  • URL&HTTP协议详解

    URL xff1a 统一资源定位符 这就意味着我们可以通过URL的方式去访问的资源 xff08 接口 xff09 URI xff1a 统一资源标识符 是一种抽象的概念 xff0c 本身没有具体去实现 一 URL URL是实现接口访问的第一步