news 2026/5/8 17:26:43

HTTP 请求详解以及测试角度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HTTP 请求详解以及测试角度

HTTP 请求详解以及测试角度

1. HTTP 是什么

HTTP(Hypertext Transfer Protocol)是应用层的请求/响应协议。客户端发送请求,服务端返回响应。接口测试里关注的不是“能不能调通”这么简单,而是请求语义、状态码、Header、Body、缓存、安全、契约和副作用是否符合约定。

一个完整 HTTP 请求通常由以下部分组成:

组成说明测试关注点
请求行方法、URL、HTTP 版本方法是否正确,路径是否匹配,URL 编码和长度是否合规
请求头Content-Type、Authorization、Cookie、Accept、Origin 等鉴权、内容协商、跨域、缓存、追踪字段是否正确
请求体JSON、表单、文件、二进制等Schema、必填、类型、边界、大小、编码、恶意输入
响应状态码2xx、3xx、4xx、5xx是否能表达真实处理结果,异常是否被正确归类
响应头Content-Type、Cache-Control、ETag、Location 等缓存、安全、重定向、资源定位、契约一致性
响应体业务数据或错误信息字段完整性、类型、脱敏、错误结构、兼容性

2. HTTP 方法

HTTP 方法表达“客户端希望服务端对目标资源做什么”。测试时不要只看接口是否返回 200,还要验证方法语义、幂等性、副作用和权限是否一致。

方法协议语义安全幂等请求体典型场景测试重点
GET获取目标资源的当前表示不建议承载业务语义查询列表、查询详情无副作用、参数过滤、缓存、权限隔离
HEAD与 GET 类似,但不返回响应体不建议探测资源是否存在、获取元数据响应体为空,响应头与 GET 一致
POST按目标资源自身语义处理请求内容否,除非业务设计幂等常用创建、提交、登录、复杂查询、批处理重复提交、防重、参数校验、副作用
PUT用请求内容替换目标资源当前表示常用全量更新、客户端指定资源 ID 的创建/覆盖全量字段、重复请求一致、并发覆盖
PATCH对目标资源做局部修改取决于补丁语义和业务设计常用局部更新未传字段保留、补丁格式、事务原子性
DELETE删除目标资源当前表示不建议承载业务语义删除资源、取消绑定重复删除一致、关联约束、删除后不可访问
OPTIONS获取目标资源通信选项通常无CORS 预检、方法探测Allow、CORS 头、来源校验
TRACE回显请求路径上的消息通常无诊断生产环境通常禁用,防 XST 风险
CONNECT建立到目标服务器的隧道特殊HTTPS 代理隧道代理策略、内网穿透防护

2.1 安全方法与幂等方法

概念方法含义测试判断标准
安全方法GET、HEAD、OPTIONS、TRACE客户端请求语义是只读,不应要求服务端改变资源状态调用前后数据库、缓存、业务状态、消息、审计等无业务性变更
幂等方法GET、HEAD、PUT、DELETE、OPTIONS、TRACE多次相同请求对服务端资源的预期影响与一次请求相同重复调用不产生额外资源、不重复扣减、不重复发送关键业务消息
非幂等方法POST 通常非幂等;PATCH 视补丁和业务而定多次相同请求可能产生不同业务结果需要额外验证防重、幂等键、唯一索引、状态机保护

注意:安全和幂等不是一回事。PUTDELETE是幂等方法,但不是安全方法,因为它们会修改或删除资源。

3. 常见状态码

状态码是服务端对请求处理结果的协议级表达。接口测试里要避免所有异常都返回 200,也要避免把业务失败误包装成 500。

分类含义常见状态码
1xx请求已接收,继续处理100 Continue、101 Switching Protocols
2xx请求成功处理200 OK、201 Created、202 Accepted、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、409 Conflict、413 Payload Too Large、414 URI Too Long、415 Unsupported Media Type、422 Unprocessable Content、429 Too Many Requests
5xx服务端处理失败500 Internal Server Error、502 Bad Gateway、503 Service Unavailable、504 Gateway Timeout、505 HTTP Version Not Supported

3.1 状态码测试建议

状态码适用场景测试关注点
200 OK查询成功、操作成功且返回结果响应结构、字段类型、业务数据一致
201 Created成功创建资源是否返回资源 ID,必要时校验 Location 响应头
202 Accepted请求已接收,异步处理后续任务状态、轮询接口、消息或任务记录
204 No Content成功但不返回响应体响应体为空,不夹带多余 JSON
304 Not Modified缓存命中ETag、If-None-Match、Last-Modified、If-Modified-Since
400 Bad Request参数语法错误、JSON 残缺、格式非法字段级错误提示,不能产生脏数据
401 Unauthorized未认证或认证失效无 token、过期 token、签名错误
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 17:26:25

音频 PCM

音频里的 PCM(Pulse Code Modulation) 线性脉冲编码调制,是未经压缩的原始音频裸数据,Linux 音频栈最底层格式,ALSA、PipeWire、ALSA 设备交互全部基于 PCM。核心定义模拟声波电压 → 定时采样 → 量化为数字整数 → …

作者头像 李华
网站建设 2026/5/8 17:26:24

利用 @property 注册自定义属性:渐变动画不再是梦

一个让我怀疑人生的渐变动画需求 2019年,设计师丢给我一个设计稿,里面有一个“流光溢彩”的卡片背景——颜色从蓝色到紫色平滑过渡,周而复始,像个呼吸的光环。 “没问题,”我心想,“不就是transition吗?” 结果写了才发现,CSS根本不支持直接对background-image做动画…

作者头像 李华
网站建设 2026/5/8 17:26:04

ModOrganizer2:为什么你的模组管理体验还停留在石器时代?

ModOrganizer2:为什么你的模组管理体验还停留在石器时代? 【免费下载链接】modorganizer Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved 项目地址: https://gitcode.com/…

作者头像 李华
网站建设 2026/5/8 17:25:31

地质调查数据采集系统专栏⑤ | ZGIS赋能地质灾害调查,筑牢数智防线

本期以地质灾害调查为切入点,聚焦隐患识别、孕灾条件分析、风险评估、成果汇交等核心业务,并将AI智能技术与地质调查管理系统深度融合,直击灾调作业"急、难、险、繁"核心痛点,以数字化手段为地质灾害防治、风险双控、避…

作者头像 李华