curl
curl 是常用的命令行 HTTP 客户端,适合调试接口、下载文件、验证请求头、模拟表单提交和排查网络问题。
查看版本
确认本机是否已安装 curl。
写法:
curl --version效果/说明:
可以看到 curl 版本、支持的协议和编译特性。
curl 8.0.0
Protocols: http https ftp ftps发送 GET 请求
访问一个 URL 并输出响应内容。
写法:
curl https://api.example.com/users效果/说明:
默认使用 GET 方法,请求结果会直接输出到终端。
[
{
"id": 1,
"name": "Alice"
}
]查看响应头
只查看响应头,不输出响应体。
写法:
curl -I https://api.example.com/users效果/说明:
适合检查状态码、Content-Type、缓存头和重定向信息。
HTTP/2 200
content-type: application/json显示详细请求过程
输出连接、TLS、请求头和响应头等调试信息。
写法:
curl -v https://api.example.com/users效果/说明:
-v 常用于排查 DNS、证书、代理、重定向和请求头问题。
发送 POST JSON
向接口提交 JSON 请求体。
写法:
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"Alice","age":20}'效果/说明:
-X POST:指定请求方法为 POST-H:添加请求头-d:提交请求体
{
"id": 1,
"name": "Alice",
"age": 20
}从文件读取 JSON
请求体较长时,可以把 JSON 放到文件中。
写法:
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d @user.jsonuser.json 示例:
{
"name": "Alice",
"age": 20
}效果/说明:
@user.json 表示从文件读取请求体,适合复杂接口调试。
发送表单请求
提交 application/x-www-form-urlencoded 表单。
写法:
curl -X POST https://api.example.com/login \
-d "username=alice" \
-d "password=123456"效果/说明:
多个 -d 参数会被拼接成表单字段。
username=alice&password=123456上传文件
使用 multipart/form-data 上传文件。
写法:
curl -X POST https://api.example.com/upload \
-F "file=@./avatar.png" \
-F "type=avatar"效果/说明:
-F用于提交 multipart 表单@./avatar.png表示读取本地文件
下载文件
把远程文件保存到本地。
写法:
curl -O https://example.com/files/app.zip指定保存文件名:
curl -L https://example.com/download/latest -o app.zip效果/说明:
-O:使用远程文件名保存-o:指定本地文件名-L:跟随重定向
添加请求头
给请求添加自定义 Header。
写法:
curl https://api.example.com/users \
-H "Accept: application/json" \
-H "X-Request-Id: demo-001"效果/说明:
常用于传递内容协商、追踪 ID、租户 ID 等信息。
携带 Token
访问需要认证的接口。
写法:
curl https://api.example.com/profile \
-H "Authorization: Bearer your-token"效果/说明:
Bearer Token 常用于 OAuth2、JWT 等认证方式。不要把真实 Token 提交到仓库或粘贴到公开环境。
使用 Cookie
携带 Cookie 访问接口。
写法:
curl https://example.com/profile \
-H "Cookie: session_id=abc123"保存响应中的 Cookie:
curl -c cookies.txt https://example.com/login读取 Cookie 文件:
curl -b cookies.txt https://example.com/profile设置超时
避免请求长时间卡住。
写法:
curl https://api.example.com/users \
--connect-timeout 3 \
--max-time 10效果/说明:
--connect-timeout:连接超时时间--max-time:整个请求最大耗时
跟随重定向
自动跟随 301、302 等重定向。
写法:
curl -L https://example.com/latest效果/说明:
下载文件或访问短链接时经常需要 -L。
忽略 HTTPS 证书校验
本地测试自签名证书时使用。
写法:
curl -k https://localhost:8443/health效果/说明:
-k 会跳过证书校验,只建议在本地或测试环境使用,生产环境不要依赖它。
输出状态码
只关心接口是否正常时,可以输出 HTTP 状态码。
写法:
curl -s -o /dev/null -w "%{http_code}\n" https://api.example.com/health效果/说明:
-s:静默模式-o /dev/null:丢弃响应体-w:按模板输出信息
200Windows PowerShell 可写为:
curl.exe -s -o NUL -w "%{http_code}\n" https://api.example.com/health使用代理
通过 HTTP 代理发送请求。
写法:
curl -x http://127.0.0.1:7890 https://api.example.com/users效果/说明:
适合排查代理环境、抓包工具或公司网络访问问题。
常用工作流
下面是一次常见的接口调试流程。
写法:
curl -v https://api.example.com/health
curl -I https://api.example.com/users
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-token" \
-d '{"name":"Alice"}'效果/说明:
- 先检查服务是否可访问
- 再查看响应头和状态码
- 最后携带请求头和请求体调试业务接口
常用命令速查
| 命令 | 说明 |
|---|---|
curl <url> | 发送 GET 请求 |
curl -I <url> | 只查看响应头 |
curl -v <url> | 显示详细请求过程 |
curl -L <url> | 跟随重定向 |
curl -O <url> | 按远程文件名下载 |
curl -o <file> <url> | 指定文件名下载 |
curl -H "Key: Value" <url> | 添加请求头 |
curl -d "a=1" <url> | 发送表单请求 |
curl -F "file=@a.png" <url> | 上传文件 |
curl --connect-timeout 3 <url> | 设置连接超时 |
curl --max-time 10 <url> | 设置请求总超时 |
curl -k <url> | 忽略 HTTPS 证书校验 |
curl -x <proxy> <url> | 使用代理 |
