软件测试接口测试从入门到精通:常见接口类型与数据格式

04 常见接口类型与数据格式 - 认识接口的"语言"

🎯 本章目标:了解各种接口类型和数据格式,掌握JSON和XML的读写,为后续测试实战打下基础。


4.1 接口类型全景图

  • HTTP/RESTful:最常用,JSON格式
  • WebService/SOAP:企业级,XML格式
  • RPC:微服务,Protobuf
  • GraphQL:灵活查询,单一端点
  • WebSocket:实时通信,双向推送
  • 消息队列:异步解耦,Kafka/RabbitMQ

4.2 JSON 数据格式

什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。

JSON数据类型

  • 基本类型:字符串 "hello"、数字 123 / 3.14、布尔 true / false、null
  • 复合类型:对象 {"key":"value"}、数组 1,2,3

JSON示例:用户信息

json 复制代码
{
  "id": 1,
  "name": "张三",
  "email": "zhangsan@example.com",
  "isVip": true,
  "balance": null,
  "tags": ["developer", "tester"],
  "address": {
    "city": "北京",
    "zipCode": "100000"
  }
}

JSON vs JavaScript对象

特性 JSON JavaScript对象
键名 必须用双引号 可以不加引号
字符串 必须用双引号 单双引号都可以
末尾逗号 不允许 允许
注释 不支持 支持
方法 不支持 支持

JSONPath - JSON的"查询语言"

复制代码
$.store.book[0].title     → 获取第一本书的标题
$.store.book[*].author    → 获取所有书的作者
$.store.book[?(@.price<10)]  → 获取价格小于10的书

4.3 XML 数据格式

什么是XML

XML(eXtensible Markup Language,可扩展标记语言) 是一种标记语言,用于存储和传输数据。

XML结构

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>1</id>
  <name>张三</name>
  <email>zhangsan@example.com</email>
  <isVip>true</isVip>
  <tags>
    <tag>developer</tag>
    <tag>tester</tag>
  </tags>
  <address>
    <city>北京</city>
    <zipCode>100000</zipCode>
  </address>
</user>

JSON vs XML 对比

特性 JSON XML
可读性 简洁 较冗长
解析速度 较慢
数据体积 大(有标签)
注释 不支持 支持
Schema验证 JSON Schema XSD
适用场景 Web API、移动App 企业级、金融系统

4.4 SOAP 接口

什么是SOAP

SOAP(Simple Object Access Protocol) 是一种基于XML的协议,用于在网络上交换结构化的信息。

SOAP消息结构

xml 复制代码
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/">
  <soap:Header>
    <!-- 认证信息等 -->
  </soap:Header>
  <soap:Body>
    <getUserRequest>
      <id>1</id>
    </getUserRequest>
  </soap:Body>
</soap:Envelope>

SOAP vs REST

特性 SOAP REST
协议 严格协议 架构风格
数据格式 仅XML JSON/XML/其他
传输层 多种协议 主要HTTP
安全性 WS-Security HTTPS + Token
缓存 不支持 支持
适用场景 金融、企业级 Web、移动App

4.5 GraphQL 接口

什么是GraphQL

GraphQL 是一种查询语言,允许客户端精确地请求所需的数据,避免过多或过少获取。

GraphQL vs REST

REST:GET /users/1 返回所有字段;GET /users/1/orders 需要第二次请求

GraphQL:一个查询获取 name、email 和 orders,只返回需要的字段

GraphQL查询示例

graphql 复制代码
# 查询用户信息(只取需要的字段)
query {
  user(id: 1) {
    name
    email
    orders {
      id
      total
    }
  }
}

响应

json 复制代码
{
  "data": {
    "user": {
      "name": "张三",
      "email": "zhangsan@example.com",
      "orders": [
        {"id": "1001", "total": 299},
        {"id": "1002", "total": 599}
      ]
    }
  }
}

4.6 WebSocket 接口

什么是WebSocket

WebSocket 是一种在单个TCP连接上进行全双工通信的协议,支持服务器主动推送消息。

WebSocket vs HTTP

特性 HTTP WebSocket
连接 短连接/长连接 长连接
通信方式 请求-响应 双向推送
实时性 轮询 实时
适用场景 普通API 聊天、股票、游戏

WebSocket示例

javascript 复制代码
// 建立连接
const ws = new WebSocket('wss://example.com/socket');

// 连接成功
ws.onopen = () => {
  ws.send(JSON.stringify({type: 'subscribe', channel: 'prices'}));
};

// 接收消息
ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log('收到推送:', data);
};

4.7 数据格式转换工具

在线工具推荐

工具 用途 网址
JSON格式化 美化JSON jsonformatter.org
XML格式化 美化XML xmlgrid.net
JSON转XML 格式转换 convertjson.com
Base64编解码 编码转换 base64encode.org
URL编解码 URL编码 urlencoder.org

4.8 本章小结

核心知识点

  • JSON:轻量简洁,键值对结构,最常用
  • XML:标签结构,企业级使用,SOAP基础
  • GraphQL:灵活查询,按需获取,单一端点
  • WebSocket:双向通信,实时推送,长连接

课后练习 📝

  1. 转换题 :将下面的JSON转换为XML格式:{"users": [{"id": 1, "name": "张三"}, {"id": 2, "name": "李四"}]}
  2. 分析题:什么场景适合用GraphQL而不是REST?
  3. 实践题:找一个公开的SOAP API(如天气服务),尝试构造一个SOAP请求。

4.9 下章预告

下一章我们将学习Postman,这是接口测试最常用的工具,从安装到精通!


"数据格式是接口的'语言',掌握它们,你就能读懂任何接口在说什么。"

相关推荐
糖果店的幽灵2 小时前
软件测试接口测试从入门到精通:RESTful API设计规范
软件测试·后端·接口测试·restful·设计规范·api设计
糖果店的幽灵2 小时前
软件测试接口测试从入门到精通:Postman入门到精通
软件测试·测试工具·接口测试·postman·api测试
糖果店的幽灵2 小时前
软件测试接口测试从入门到精通:JMeter接口测试
软件测试·jmeter·接口测试·压力测试·性能测试
糖果店的幽灵3 小时前
软件测试接口测试从入门到精通:HTTP协议详解
软件测试·网络协议·接口测试·http协议·测试基础
糖果店的幽灵4 小时前
软件测试接口测试从入门到精通:curl命令行工具
linux·软件测试·接口测试·命令行·curl
心软小念1 天前
2026软件测试高频面试题
软件测试·面试·职场和发展
摇滚侠1 天前
SpringMVC 入门到实战 配置类替换 XML 配置文件 86-91
xml·java·后端·spring·maven·intellij-idea
学代码的真由酱1 天前
【自用】接口测试
接口测试·postman·测试·cookie·token鉴权
DrMaker1 天前
【无标题】
软件测试·python·测试工具·pyqt