当前位置: 首页 > news >正文

API自动化与单元测试

一、API测试 (重点)

HTTP(超文本传输协议)详解

为什么说HTTP是超文本传输协议?

这个名称精确地概括了HTTP的核心本质,我们可以拆解来看:

  1. 超文本
    • “文本” 指的是文字、字符等基本信息。
    • “超”意味着“超越”或“链接”。超文本是一种包含超链接的文本,允许用户从一个文档跳转到另一个相关文档。
    • 最典型的超文本系统就是万维网。我们浏览网页时,通过点击链接从一个页面跳转到另一个页面,这正是“超文本”的体现。
    • 如今,HTTP传输的早已不限于文本,还包括图片、视频、音频、CSS、JavaScript等所有Web资源,但它的设计初衷和核心思想源于“超文本”。
  2. 传输
    • 这指明了HTTP协议的主要作用——在两点之间搬运数据
    • 通常,这两点是客户端服务器端。客户端(Web浏览器)发出请求,服务器端(后台应用服务器)返回响应。
  3. 协议
    • 协议是一套预先定义好的规则和约定。HTTP规定了客户端和服务器之间通信的语法、格式和顺序。双方都必须遵守这套规则,才能正确理解对方的意图,完成数据的交换。

HTTP协议简介

HTTP 是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网(WWW)数据通信的基础。

  • 客户端-服务器模型:HTTP 遵循经典的客户端-服务器模型。浏览器(客户端)向服务器发送请求,服务器返回一个响应
  • 无状态协议:默认情况下,每个 HTTP 请求都是独立的,服务器不会保留之前请求的任何信息。为了实现状态(如用户登录),需要使用 Cookie、Session 等技术。
  • 基于 TCP/IP:HTTP 依赖于 TCP(或 TLS 加密的 TCP,即 HTTPS)来保证数据的可靠传输。

一个完整的 HTTP 事务包含四个步骤:

  1. 建立 TCP 连接。
  2. 客户端发送 HTTP 请求。
  3. 服务器处理请求并返回 HTTP 响应。
  4. 关闭 TCP 连接(在 HTTP/1.0 或 Connection: close 时;HTTP/1.1 默认使用持久连接)。

下面我们深入到请求和响应的各个部分。

  1. HTTP请求方法
    HTTP 方法指明了客户端希望服务器对资源执行的操作。它们也被称为“动词”。
方法 英文含义 描述 特点 幂等性 安全性 典型应用场景
GET Retrieve 请求指定的资源。只应用于获取数据,不应产生“副作用”(如修改数据)。 请求参数以查询字符串的形式附加在 URL 之后(如 ?key=value),有长度限制,且会在浏览器历史记录和日志中明文显示,不安全。 点击链接、在浏览器地址栏输入网址、搜索。
POST Create 提交指定的资源。只应用于提交数据,会导致服务器状态变化(如创建新资源、提交表单)。 请求参数放在 请求体(Body) 中,没有长度限制,相对 GET 更安全(不会在 URL 中显示)。 用户登录、发表评论、提交订单。
PUT Update/Replace 用请求体中的内容 完整替换 目标资源。如果资源不存在,则创建它。 常用于更新整个资源。 更新用户个人资料(全部字段)。
PATCH Update/Modify 用于对资源进行部分修改。与 PUT 替换整个资源不同,PATCH 只发送需要更新的字段。 在 RESTful API 中广泛应用。 ❓(取决于实现方式) 只修改用户的手机号。
DELETE Delete 请求服务器,删除 指定资源。 --- 删除一篇文章、注销账号。
HEAD Head 与 GET 类似,但服务器只返回响应头,不返回响应体。 用于获取资源的元信息,如检查资源是否存在、查看文件大小或最后修改时间,而无需下载整个内容。 检查链接是否有效、判断资源是否被修改过。
OPTIONS Options 用于获取目标资源所支持的通信选项(如支持的 HTTP 方法)。 CORS(跨域资源共享)预检请求。 A请求B中的某个属性
  • 幂等性: 相同的请求执行一次与执行多次,对资源的状态产生的影响是相同的。GET, PUT, DELETE都是幂等的,POST不是。
  • 安全性: 该方法是否仅用于获取数据,而不修改服务器上的资源。GET和HEAD是安全的。

最常用的是GET和POST。


  1. HTTP状态码
    状态码是一个三位数字,用于表示服务器对请求的处理结果。它分为5类:
概述 类别 含义 常见状态码
表示请求已被接收,需要继续处理。 1xx 信息性 100 Continue(继续)
101 Switching Protocols (切换协议)
表示请求已被服务器成功接收、理解并接受。 2xx 成功 200 OK(请求成功)
201 Created(已创建,常用于POST/PUT成功)
204 No Content(成功,但无内容返回)
表示需要客户端采取进一步的操作才能完成请求。 3xx 重定向 301 Moved Permanently(永久重定向)
302 Found(临时重定向)
304 Not Modified(资源未修改,使用缓存)
表示客户端似乎有错误,服务器无法处理请求。 4xx 客户端错误 400 Bad Request(请求语法错误)
401 Unauthorized(未认证)
403 Forbidden(服务器理解请求但拒绝执行)
404 Not Found(资源未找到)
405 Method Not Allowed(方法不被允许)
表示服务器在处理请求的过程中发生了错误。 5xx 服务器错误 500 Internal Server Error(服务器内部错误)
502 Bad Gateway(网关错误)
503 Service Unavailable(服务不可用)
504 Gateway Timeout(网关超时)

  1. HTTP头部
    HTTP 头部允许客户端和服务器通过请求和响应传递附加信息。它们是键值对,不区分大小写。
  • 通用头部
    可用于请求和响应消息。

    • Cache-Control:指定缓存机制。
    • Connection:控制本次事务完成后是否关闭网络连接。
    • Date:消息创建的日期和时间。
  • 请求头部
    提供关于请求、客户端或客户端的首选格式的更多信息。

    • Host:请求的目标主机和端口号(HTTP/1.1 必须)。
    • User-Agent:包含发起请求的客户端应用程序的信息。
    • Accept:告知服务器客户端能够处理的内容类型(如 Accept: text/html, application/json)。
    • Accept-Encoding:客户端支持的压缩格式(如 gzip, deflate)。
    • Authorization:包含用于服务器验证客户端身份的凭证(如 Bearer <token>)。
    • Cookie:将之前服务器通过 Set-Cookie 发送的 Cookie 回传给服务器。
    • Content-Type:请求体的媒体类型(如 application/json)。
    • Content-Length:请求体的字节长度。
  • 响应头部
    提供关于响应的额外信息。

    • Server:包含处理请求的服务器软件信息。
    • Set-Cookie:服务器向客户端发送 Cookie。
    • Content-Type:响应体的媒体类型(如 text/html; charset=utf-8)。
    • Content-Length:响应体的字节长度。
    • Content-Encoding:响应体使用的编码格式(如 gzip)。
    • Location:在重定向时使用,指定要重定向到的 URL。

  1. HTTP 消息体
    消息体是 HTTP 传输的核心数据部分,在请求和响应中都是可选的。
  • 请求体

    • 何时存在:通常在 POST、PUT、PATCH 等需要向服务器发送数据的请求中使用。
    • 格式:由 Content-Type 头部指定。
      • application/x-www-form-urlencoded:默认的表单提交格式,如 key1=value1&key2=value2
      • multipart/form-data:用于上传文件。
      • application/json:传输 JSON 格式的数据(RESTful API 常用)。
      • application/xml:传输 XML 格式的数据。
  • 响应体

    • 何时存在:服务器返回给客户端的实际内容,如 HTML 页面、JSON 数据、图片、CSS、JavaScript 等。
    • 格式:由响应头中的 Content-Type 指定。
      • text/html:HTML 文档。
      • application/json:JSON 数据。
      • image/png:PNG 图片。
      • application/javascript: JavaScript文件。

  1. HTTP请求/响应示例
  • 请求:

    POST /api/login HTTP/1.1
    Host: www.example.com
    User-Agent: Mozilla/5.0...
    Content-Type: application/json
    Content-Length: 42{"username": "alice", "password": "secret"}
    
    • 第一行(请求行): POST(方法) /api/login(路径) HTTP/1.1(协议版本)。
    • 第2-5行(请求头): 包含了请求的元信息。
    • 空行: 分隔头部和消息体。
    • 最后一行(消息体): 实际发送的JSON数据。
  • 响应:

    HTTP/1.1 200 OK
    Content-Type: application/json
    Set-Cookie: sessionId=abc123; Path=/
    Content-Length: 29{"status": "success", "user": "Alice"}
    
    • 第一行(状态行): HTTP/1.1(协议版本) 200(状态码) OK(状态消息)。
    • 第2-4行(响应头): 包含了响应的元信息,包括设置一个Cookie。
    • 空行: 分隔头部和消息体。
    • 最后一行(消息体): 服务器返回的JSON数据。
  1. 补充:HTTP的发展
  • HTTP/1.0: 每个请求/响应都需要建立一个新的TCP连接,效率低下。
  • HTTP/1.1(目前最主流):
    • 引入了持久连接,一个TCP连接可以处理多个请求。
    • 引入了管道化,但存在队头阻塞问题。
  • HTTP/2:
    • 二进制协议,性能更高。
    • 多路复用,解决了队头阻塞。
    • 服务器推送。
  • HTTP/3:
    • 基于QUIC协议(运行在UDP上),进一步减少连接建立延迟。
    • 解决了TCP层面的队头阻塞问题。

总结

组成部分 作用 关键示例
方法 定义操作类型 GET(取),POST(增),PUT(改),DELETE(删)
状态码 表示请求结果 200(成功),404(未找到),500(服务器错误)
头部 传递元信息 Content-Type(数据类型),Authorization(认证)
消息体 传输实际数据 HTML代码,JSON字符串,表单数据

理解这四个核心部分,是掌握 Web 开发、API 设计和网络调试的基础。它们共同协作,完成了我们在互联网上的每一次点击和浏览。

http://www.rkmt.cn/news/61780.html

相关文章:

  • 2025年市场上四川住人集装箱厂家最新用户好评榜
  • 2025年市面上成都房屋拆除建渣清运最新权威推荐排行榜
  • 2025年下半年石材雕刻机、墓碑雕刻机、绳锯机厂家综合推荐指南:十大优质厂商深度解析
  • 用“分区”来面对超大数据集和超大吞吐量
  • 2025年下半年溶剂油墨/玻璃油墨/水性油墨/UV油墨/溶剂耗材推荐前十指南:专业选购与口碑解析
  • 第九届能源、环境与材料科学国际学术会议(EEMS 2025)
  • 2025年卧室简约吊灯生产厂家推荐:助你提升家居品质
  • 2025年现代智慧家居照明工厂推荐
  • 2025十大留学中介排名TOP10:申请破局的文书制胜法则
  • 市面主流公寓管理系统推荐,公寓管理系统软件排名
  • 2025年11月iso9001认证/iso三体系认证/CE认证/iatf16949认证/iso27001认证厂家推荐:专业选择与深度解析
  • 2025年定制离焦镜品牌推荐榜单:定制离焦、定制离焦镜、个性化定制离焦镜引领技术新趋势
  • 2025年大型镀锌锅优质厂家权威推荐榜单:热镀锌锅设备/专业镀锌锅/工业镀锌锅设备源头厂家精选
  • 2025年幼儿园设计厂家引领者,飞友以安全重塑行业标准
  • 2025留学中介排名TOP10:留学机构文书申请优势大公开!
  • 留学中介机构排名TOP10怎么选?哪家能助申请
  • 2025 年保温板源头厂家最新推荐排行榜:国家级高新技术企业领衔,优质品牌地暖 / 环保保温板精选
  • 请察看w_mess上的对象w_mess的open事件的第11问题
  • 选择留学中介机构排名TOP10,口碑与实力双保障
  • 选择机构不再迷茫:参考留学中介排行榜TOP10
  • 2025年深圳装修公司最新推荐榜,深圳办公室装修设计、深圳酒店装修设计、深圳展厅装修设计、深圳写字楼装修设计、深圳厂房装修设计、深圳公寓装修设计、聚焦服务品质与特色业务竞争力深度剖析
  • OIDC 身份提供商和 Harbor
  • 云计算技术
  • [P4911]河童重工的计算机 - 题解
  • 计算H和F矩阵变换图像 - MKT
  • 级语言程序设计课程第七次个人作业
  • 工业相机成像基础:传感器和分辨率
  • 评测姬
  • Kuscia 1.1.0 发布:新增带宽调度、Envoy 粘性会话与全面安全升级
  • 2025孕妇护手霜推荐:专治干燥敏感,孕期带娃安心无添加爆款实测