告别复制粘贴:用 curl + jq 在终端里优雅调试 HTTP 接口
日常开发中,调试 HTTP 接口是家常便饭。很多人习惯打开 Postman 或浏览器插件,点点点填参数;也有人直接在终端里敲 curl,却被一屏幕未经格式化的 JSON 淹没,来回复制粘贴找字段。其实只要把 curl 和 jq 组合起来,终端就能变成一个轻量又高效的接口调试台。
一、先把 curl 用顺手
curl 的参数很多,调试接口常用的其实就几个:
-s:静默模式,去掉进度条干扰-i:把响应头也打印出来,排查鉴权问题很有用-X:指定请求方法-H:添加请求头-d:发送请求体-w:自定义输出格式,比如只看耗时和状态码
举个例子,查询一个用户信息接口:
curl -s -i -H "Authorization: Bearer <token>" https://api.example.com/users/1001
加上 -i 能一眼看到返回的状态码和 Content-Type:接口是 401 还是 500,先看头再看体,排查思路会清晰很多。
二、让 jq 接管 JSON
curl 拿到的响应体往往是一整行压缩过的 JSON,肉眼几乎无法阅读。这时把输出通过管道交给 jq:
curl -s https://api.example.com/users/1001 | jq .
一个点号就能把 JSON 格式化打印,层级缩进一目了然。更进一步,可以直接提取字段:
curl -s https://api.example.com/users/1001 | jq '.data.nickname'
jq 支持管道、过滤和映射,比如只看数组里每个元素的名字和 id:
curl -s https://api.example.com/users | jq '.data[] | {id, nickname}'
三、实战:一次登录,多次调用
很多接口需要先登录拿 token,再带着 token 调业务接口。手动复制 token 既麻烦又容易过期,可以写成两行脚本:
TOKEN=$(curl -s -X POST https://api.example.com/login \
-H "Content-Type: application/json" \
-d '{"username":"demo","password":"demo123"}' | jq -r '.data.token')
curl -s -H "Authorization: Bearer $TOKEN" \
https://api.example.com/orders | jq '.data.orders[] | {id, amount, status}'
jq -r 输出原始字符串,去掉引号,正好用来拼接请求头。token 存进变量,后续调用直接复用,一套登录逻辑可以支撑整个联调过程。
四、几个提效小技巧
1. 用 -w 只看关键指标。 想知道接口慢不慢,不用每次都翻完整响应:
curl -s -o /dev/null -w "状态码:%{http_code} 耗时:%{time_total}s\n" https://api.example.com/health
2. 把环境收敛到变量。 开发、测试、生产三套域名容易敲错,在脚本开头定义 BASE_URL,切换环境只改一行。
3. 封装成 shell 函数。 把常用的"带 token 请求"写成函数放进 .bashrc:
api() { curl -s -H "Authorization: Bearer $TOKEN" "$BASE_URL$1" | jq .; }
以后调试就只剩一句:api /orders?page=1。
五、小结
curl 负责发请求,jq 负责看数据,两者经由管道衔接,形成一条完整的"请求—解析—再请求"闭环。相比图形化工具,这套组合的优势在于可脚本化、可复用:今天随手写的两行命令,明天就能沉淀为团队的调试脚本。下次再遇到接口联调,不妨先在终端里试试这套组合,效率提升会很直观。
- 点赞
- 收藏
- 关注作者
评论(0)