【接口测试】HTTP协议介绍

目录

介绍

HTTP状态码

HTTP报文

请求方法

HTTP版本

HTTP标头

通用标头

请求标头

响应标头

get 编码

post 编码

RESTful风格

HTTPS


 

绝大多数的Web服务接口都是基于HTTP协议进行通信的,包括RESTful API和SOAP等。了解HTTP协议可以帮助测试人员理解接口的请求和响应格式,从而更好地进行接口测试

介绍

HTTP 协议(超文本传输协议)是服务端传送超文本到前端的传输协议,传送的数据一般包括 HTML 文件、图片、文字等。HTTP 协议工作在前端到服务端的架构上,App 端或者 Web 浏览器端通过 URL 或者接口向服务端发送请求,服务端接收到前端的请求后,向前端发送响应信息

HTTP状态码

  1. 1xx(信息提示):服务器接收到请求并正在处理。
    • 100 Continue:客户端可以继续发送请求。
    • 101 Switching Protocols:服务器正在切换协议。
  1. 2xx(成功):请求被成功接收、理解和处理。
    • 200 OK:请求成功,服务器返回所请求的资源。
    • 201 Created:请求已成功处理,并创建了新的资源。
    • 204 No Content:服务器成功处理请求,但没有返回任何内容。
  1. 3xx(重定向):需要进一步操作以完成请求。
    • 301 Moved Permanently:所请求的资源已永久移动到新位置。
    • 302 Found:所请求的资源暂时移动到新位置。
    • 304 Not Modified:客户端缓存的资源是最新的,无需重新下载。
    • 303:永久重定向
  1. 4xx(客户端错误):请求包含语法错误或无法完成请求。
    • 400 Bad Request:请求无效,服务器无法理解。
    • 401 Unauthorized:请求未经授权。
    • 403 Forbidden:服务器拒绝请求访问。
    • 404 Not Found:所请求的资源不存在。
  1. 5xx(服务器错误):服务器在处理请求时发生错误。
    • 500 Internal Server Error:服务器内部错误。
    • 502 Bad Gateway:服务器作为网关或代理,从上游服务器接收到无效响应。
    • 503 Service Unavailable:服务器暂时无法处理请求

401和403的区别?

401状态码表示客户端请求需要进行身份验证,而此时客户端未提供凭据或提供的凭据不正确,客户端需要重新进行身份验证。

403状态码表示客户端请求被禁止,服务端明确告知客户端这个请求是不被允许的,客户端无需重新进行身份验证。

要想解决401状态码问题,需要首先确认账号密码是否正确,其次检查服务端身份验证的代码是否能够正确调用。如果服务端没有进行身份验证,需要根据业务规则对接口进行修改,让其进行身份验证。

要想解决403状态码问题,需要先确认客户端访问的资源是否有权限访问,如果没有权限,需要根据业务规则修改接口权限配置。

HTTP报文

HTTP协议主要由三大部分组成:

  • 起始行:由方法、URL字段和HTTP版本字段组成
  • 头部字段
  • 正文消息

(起始行和头部字段,合并称为请求头或响应头)

请求方法

  1. GET:从服务器获取资源。该请求方法不应该对服务器上的资源做任何修改,只允许读取数据。
  2. POST:向服务器添加新的资源。该请求方法对服务器上的资源做出修改,并在服务器上创建新资源。
  3. PUT:向服务器更新某个资源。该请求方法对特定资源进行完全替换,如果没有找到该资源,则创建一个新的。
  4. DELETE:从服务器删除指定资源。
  5. HEAD:与GET类似,但仅返回响应头部信息,不返回响应正文(用于获取资源的元信息)。
  6. OPTIONS:获取Web服务器所支持的HTTP请求方法列表。
  7. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  8. TRACE:回显服务器收到的请求,用于测试或诊断。

HTTP版本

  • HTTP1.0
  • HTTP1.1
  • HTTP2.0

HTTP标头

通用标头
请求标头

Accept:告知客户端能够接收的MIME类型是什么

Accept-Charset:客户端能够接受的字符编码

Accept-Encoding:客户端希望服务端返回的内容编码

Accept-Language:客户端希望服务端返回的语言类型

Authorization:请求头用于向服务器认证用户代理的凭据,通常用在服务器以401未经授权状态和WWW-Authenticate标头响应之后,啥意思呢? 你不明白的话我画张图给你看

Host:指明了服务器的域名

User-Agent:将创建请求的浏览器和用户代理名称等信息传达给服务器;Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0

响应标头
get 编码

application/x-www-form-urlencoding

post 编码

1、application/x-www-form-urlencoded (默认)

1、multipart/form-data (上传文件)

2、application/json (用来告诉服务端消息主体是序列化后的 JSON 字符串)

3、text/xml:是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。 XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。

RESTful风格

RESTful风格是一种基于HTTP协议的Web服务架构,它使用HTTP的GET、POST、PUT、DELETE等方法来实现对资源的操作。它强调利用URI(统一资源标识符)来唯一地标识资源,通过HTTP报文中的动词和请求头来操作资源,而不是通过某些特定的RPC(远程过程调用)机制进行通信。RESTful架构通常采用JSON或XML格式作为数据传输格式。

在RESTful架构中,资源的状态可以使用HTTP状态码进行表示,如200表示请求成功,404表示未找到资源等。同时,RESTful还要求服务端无状态化,即服务端不记录用户状态信息,每次请求都包含足够的信息来描述请求。

使用RESTful架构,可以使得Web应用程序更加简单、高效、可伸缩、易于维护。目前,RESTful已经成为很多互联网公司API设计的首选。

HTTPS

HTTPS为了解决HTTP明文传输,也没有用户验证,以及未验证报文完整性的问题

HTTPS 的全称是 Hypertext Transfer Protocol Secure ,它用来在计算机网络上的两个端系统之间进行 安全的交换信息(secure communication) ,它相当于在 HTTP 的基础上加了一个 Secure安全 的词眼,那么我们可以给出一个 HTTPS 的定义: HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。 HTTPS 是 HTTP 协议的一种扩展它本身并不保传输的证安全性,那么谁来保证安全性呢? 在 HTTPS 中,使用 传输层安全性(TLS)或安全套接字层(SSL) 对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS。

HTTPS 协议提供了三个关键的指标

  • 加密(Encryption), HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。
  • 数据一致性(Data integrity),数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整 的传输到服务端,保证用户发的是什么,服务器接收的就是什么。
  • 身份认证(Authentication) ,是指确认对方的真实身份,也就是 证明你是你 (可以比作人脸识别)它可以防止中间人攻击并建立用户信任

SSL/TLS

SSL:安全套接字层,位于OSI七层网络模型中的第五层。后面更名为TLS

TLS,用于两个通信程序之间提供保密性和数据完整性

HTTPS并不是一项新的应用层协议,只是HTTP通信接口部分由SSL和TLS替代而已。通常情况下,HTTP会先和直接和TCP进行通信。在使用SSL的HTTPS后,则先和SSL通信,接着再由SSL和TCP进行通信。也就是HTTPS是身披一层SSL的HHTP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【多线程】CAS详解

目录 🌴什么是 CAS🌸CAS 伪代码 🎍CAS 是怎么实现的🍀CAS 有哪些应⽤🌸实现原子类🌸实现自旋锁 🌳CAS 的 ABA 问题🌸**什么是 ABA 问题**?🌸ABA 问题引来的 B…

智慧城市建设的新里程碑:公共服务电子支付大屏

随着科技的飞速发展,我们的生活正在经历前所未有的变革。电子支付的出现,无疑是这场变革中的一大亮点,它不仅改变了我们日常的支付方式,更成为智慧城市建设的重要一环,为公众提供了更加便捷、高效的服务体验。 在以前&…

政府采购标书制作的要点解析

导语:政府采购是政府为满足公共利益,按照法定程序和标准,通过招标、竞争性谈判等方式,购买商品、工程和服务的行为。标书作为政府采购活动中的重要文件,其制作质量直接影响到项目的顺利进行。本文将围绕政府采购标书制…

二路归并排序的算法设计和复杂度分析and周记

数据结构实验报告 实验目的: 通过本次实验,了解算法复杂度的分析方法,掌握递归算法时间复杂度的递推计算过程。 实验内容: 二路归并排序的算法设计和复杂度分析 实验过程: 1.算法设计 第一步,首先要将数组进行…

【网站项目】314学生二手书籍交易平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

JVM相关面试题(2024大厂高频面试题系列)

一、JVM的组成 1、JVM由哪些部分组成,运行流程是什么? 回答:在JVM中共有四大部分,分别是Class Loader(类加载器)、Runtime Data Area(运行时数据区,内存分区)、Execut…

MyBatis的补充用法

说明:之前介绍过MyBatis的用法,像 用注解和Mapper.xml操作数据库、在Mapper.xml里写动态SQL。最近在一次用MyBatis批量更新数据库对象的场景中,意识到对MyBatis的一些标签用法不太熟悉,所以去 MyBatis官网 看了一些文档&#xff0…

php httpfs链接hdfs

一.代码(有bug) GitHub - michaelbutler/php-WebHDFS: A PHP client for WebHDFS 二.调用代码 1.代码1.代码 require_once(../webhdfs/src/org/apache/hadoop/WebHDFS.php);require_once(../webhdfs/src/org/apache/hadoop/tools/Curl.php); require_o…

什么是人才储备?如何做人才储备?

很多小伙伴都会有企业面试被拒的情况,然后HR会告诉你,虽然没有录用你,但是你进入了他们的人才储备库,那么这个储备库有什么作用和特点呢?我们如何应用人才测评系统完善人才储备库呢? 人才储备一般有以下三…

Python打发无聊时光:12.用PyQt实现简易的心电起搏器界面

第一步:装PyQt库 pip install PyQt5 第二步:复制代码 import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QPushButton, QVBoxLayout,QWidget, QLabel, QProgressBar, QSlider, QLineEdit, QHBoxLayout) from PyQt5.QtCore import …

软件分层(数据结构/软件逻辑上分层+举例),相连节点的概念+如何相连,为什么是层状结构(软件分层,网络协议分层+梳理协议顺序),协议分层(打电话例子)

目录 软件分层 介绍 举例 类的继承 虚拟文件系统 线程接口封装 虚拟地址空间 总结 为什么是层状的 软件分层 网络协议 原因 梳理协议顺序 相连节点 协议分层 引入 示例 实际上 逻辑上 制定出协议 软件分层 介绍 通过将软件系统划分为不同的层次,每一层都有…

uniApp 调整小程序 单个/全部界面横屏展示效果

我们打开uni项目 小程序端运行 默认是竖着的一个效果 我们打开项目的 pages.json 给需要横屏的界面 的 style 属性 加上 "mp-weixin": {"pageOrientation": "landscape" }界面就横屏了 如果是要所有界面都横屏的话 就直接在pages.json 的 gl…

Ps:海绵工具

海绵工具 Sponge Tool可用于调整图像中特定区域的饱和度,常用于增加或减少颜色的饱和度。 快捷键:O 在特别的灰度图像上,则可用于调整对比度,这可以开发出更多的创意技巧。 ◆ ◆ ◆ 常用操作方法与技巧 1、海绵工具主要用于调整…

源码解析篇 | YOLOv8官方源码项目目录结构解析

前言:Hello大家好,我是小哥谈。YOLOv8是一种目标检测算法,它是YOLO(You Only Look Once)系列算法的第8个版本。YOLOv8相比于之前的版本,在检测精度和速度上都有所提升,它在各种场景下都表现出色…

Git源码管理

参考视频:16-git的日志以及版本管理_哔哩哔哩_bilibili 参考博客:Git && Docker 学习笔记-CSDN博客 目录 简介 个人操作初始化 初始化git目录 查看生成的git目录文件 配置git工作目录的用户信息 查看工作区的状态,生成文件的…

C++面试干货---带你梳理常考的面试题(一)

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 1.C和C的区别 1.语法和特性:C是一种过程式编程语言,而C是一种面向对象编程语言。C在C的基础上增加…

Java智慧云HIS医院信息化系统源码 更具灵活性、扩展性

目录 什么是云HIS 趋势与转变 HIS上云后有哪些好处 解决方案 云HIS组成 1、门诊挂号 2、住院管理 3、电子病历 4、药物管理 5、统计报表 6、综合维护 7、运营运维 什么是云HIS 云HIS是一种基于云计算技术的医院信息管理系统。云HIS可以帮助医院管理各类医院信息&a…

Linux系统中安装redis+redis后台启动+常见相关配置

1、下载Redis Redis官网:https://redis.io/ 历史版本: http://download.redis.io/releases 2、连接Linux(或者VMwear) 我们安装的是linux版本的redis 打开xftp我们需要先将我们的Redis上传到服务器上 解压到这里 解压的指令 …

Spring MVC源码中设计模式——适配器模式

适配器模式介绍 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 应用场景: 1、系统需要使用现有的类,而此类的接口不符合系统的需要…

[c++] 继承和多态整理一

1 private 和 protected 继承,子类指针不能赋值给父类指针 如下代码,有一个基类 Base,Derived1,Derived2,Derived3 3 个子类继承了基类 Base,分别是 private 继承,protected 继承,p…