1. Shell与curl的接口测试实战指南
在DevOps和微服务时代,接口测试已成为日常开发不可或缺的环节。虽然Postman等GUI工具广为人知,但在自动化场景下,Shell脚本配合curl的组合往往能发挥更大威力。这种方案特别适合以下场景:
- 需要嵌入CI/CD流水线的自动化测试
- 服务器环境下的快速接口验证
- 需要高度定制化的测试逻辑
- 资源受限环境下的轻量级测试方案
我曾用这套方案为多个项目构建测试体系,单台4核虚拟机就能支撑每秒上千次的接口测试,相比专业测试工具节省了80%的资源消耗。下面分享的不仅是工具用法,更是在真实项目中积累的最佳实践。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心工具链准备
2.1 基础环境配置
推荐使用Linux环境(CentOS/Ubuntu均可),确保已安装:
bash复制# 检查curl版本(需7.0以上支持HTTP/2)
curl --version
# 安装jq(JSON处理神器)
sudo apt-get install jq -y # Debian系
sudo yum install jq -y # RHEL系
# 安装xmlstarlet(XML处理工具)
sudo apt-get install xmlstarlet
关键提示:生产环境建议固定工具版本。我曾遇到因jq版本升级导致解析逻辑失效的案例,现在都会在脚本开头显式声明所需版本。
2.2 curl的进阶参数详解
基础GET请求大家都会用,但这些进阶参数才是实战关键:
bash复制# 超时控制(连接/传输)
--connect-timeout 5 --max-time 10
# 自动重试(适合不稳定网络)
--retry 3 --retry-delay 1
# 输出详细日志(调试用)
-v --trace-time
# 保持会话(避免重复握手)
--cookie-jar /tmp/cookies --cookie /tmp/cookies
# 流量控制(压测时保护服务)
--limit-rate 500K
3. 请求构造实战
3.1 GET请求的完整实现
基础GET很简单,但生产环境需要更多考量:
bash复制#!/bin/bash
API_ENDPOINT="
