用 curl 入门:一条命令看懂 HTTP 请求
用 curl 入门:一条命令看懂 HTTP 请求
为什么要先学 curl
写程序、调接口、排障的时候,我们经常需要问一个最基本的问题:服务器到底返回了什么?浏览器能打开网页,却把请求和响应的细节都藏了起来。curl 就是把这些细节摊开给你看的工具:它在终端里发一次 HTTP 请求,把状态码、响应头和正文原样打印出来,出问题时一眼就能定位是网络不通、地址写错,还是服务器返回了错误。
curl 几乎所有系统都自带,不用安装、不用写代码。学会它,等于随身带了一个最小的“网络调试器”,以后学接口开发、做自动化脚本都会轻松很多。
第一次请求:先看状态码和正文
最简单的用法是直接跟一个网址:
curl https://example.com
这条命令会把网页的 HTML 原样输出到终端。如果只想先确认服务器通不通,不想被一大段正文刷屏,可以只看响应头:
curl -I https://example.com
-I 只取响应头,第一行就是状态码:200 表示成功,301 或 302 表示重定向,404 表示地址不存在,500 表示服务器内部出错。先看状态码,再决定往下查哪一步,这是排障最省时间的习惯。
几个最常用的参数
只看状态码还不够,日常还会用到这几个参数。-L 让 curl 自动跟随重定向,地址被搬家时不会只拿到一个 302 就停下;-o 可以把结果存成文件,而不是直接打印到屏幕上,下载文件、保存接口返回都很方便;-v 会打印完整的请求和响应过程,包括 DNS 解析、TLS 握手和请求头,网络不通时靠它找原因。
发送数据时,-X 指定请求方法,-H 加请求头,-d 带上请求体。比如向一个接口发 JSON:
curl -X POST https://example.com/api \
-H "Content-Type: application/json" \
-d '{"name": "test"}'
注意 -d 默认用 POST,但显式写出 -X 会让意图更清楚;请求头里的内容类型写错,是接口调不通最常见的低级错误之一。
新手常踩的三个坑
第一个坑是把输出和错误混在一起:curl 的进度信息走标准错误输出,重定向到文件时要用 -s 关掉进度,或者用 -o 直接存文件,否则文件里会混进进度条。第二个坑是忽略 HTTPS 证书报错:生产环境不要图省事加 -k 跳过证书校验,那等于放弃了加密的意义,测试环境临时用可以,正式脚本里必须去掉。第三个坑是凭感觉猜参数:每个参数的含义用 curl --help 或 man curl 当场查,比背下来更可靠。
从一条命令到日常工具
curl 的真正价值不在单条命令,而在可重复:把调通的命令存进脚本,接口回归、服务健康检查、定时拉取数据都能用同一条命令完成。先跑通一次 GET、看懂一次状态码和响应头,再练 POST 和请求头,HTTP 请求这层窗户纸就捅破了。之后无论是看文档、调接口还是排查线上问题,你都会先问一句:先 curl 一下,看看服务器到底说了什么?
- 点赞
- 收藏
- 关注作者
评论(0)