curl
是一个常用的命令行工具,用于发送 HTTP 请求,支持包括 GET、POST、PUT、DELETE 等在内的多种 HTTP 方法。它非常适合用来测试 API、下载文件、与后端服务进行交互等。接下来,我会详细讲解 curl
的基本用法以及常见的应用场景。
📋 基本命令结构
curl [options] [URL]
-
[options]
:用来配置请求的各项参数,如请求方法、头信息等。 -
[URL]
:请求的目标 URL 地址。
💡 常见用法和选项
1. 发送 GET 请求
默认情况下,curl
会发送一个 GET 请求,你只需提供 URL。
curl https://api.example.com
2. 指定请求方法
curl
可以通过 -X
参数来指定使用的 HTTP 请求方法(如 GET、POST、PUT、DELETE 等)。
curl -X GET https://api.example.com
curl -X POST https://api.example.com
3. 发送 POST 请求
使用 -X POST
来指定 HTTP 请求方法是 POST,并且你可以通过 -d
参数来发送请求体内容。
curl -X POST https://api.example.com -d "key1=value1&key2=value2"
你还可以发送 JSON 格式的数据:
curl -X POST https://api.example.com -H "Content-Type: application/json" -d '{"key1": "value1", "key2": "value2"}'
-
-H
用来添加请求头(Header),在这里设置Content-Type
为application/json
。 -
-d
用来发送数据,这里是 JSON 格式的字符串。
4. 查看响应头
使用 -I
或 --head
参数查看响应头(不获取响应体)。
curl -I https://api.example.com
5. 跟踪请求过程
使用 -v
或 --verbose
参数,查看请求和响应的详细信息,包括头信息、响应状态码等。
curl -v https://api.example.com
6. 指定请求头
使用 -H
参数来添加自定义请求头。
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com
7. 上传文件
使用 -F
参数可以上传文件。
curl -X POST -F "file=@path/to/your/file.jpg" https://api.example.com/upload
8. 设置请求超时
你可以设置请求的超时时间,防止请求卡住过长时间。使用 --max-time
来设置最大请求时间(秒)。
curl --max-time 10 https://api.example.com
9. 保存响应到文件
使用 -o
或 --output
参数将响应内容保存到文件中。
curl -o filename.txt https://api.example.com
如果你想保存到一个动态生成的文件名:
curl -o $(date +%Y%m%d%H%M%S).txt https://api.example.com
10. 禁用 SSL 验证
如果你在与自签名证书的服务器交互时遇到 SSL 验证问题,可以通过 -k
或 --insecure
禁用 SSL 验证。
curl -k https://api.example.com
🔧 结合实例:实际应用
1. 获取 JSON 数据
假设你需要从某个 API 获取 JSON 数据,并格式化显示:
curl -H "Accept: application/json" https://api.example.com/data | jq .
-
-H "Accept: application/json"
指定期望返回 JSON 格式的数据。 -
| jq .
通过管道将输出传递给jq
(一个命令行 JSON 处理工具)来格式化响应内容。
2. 发送带有认证信息的请求
假设你需要进行基本认证(用户名和密码):
curl -u username:password https://api.example.com
或者使用 Bearer Token 认证:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com
3. 获取指定页面内容
如果你只想获取某个网页的内容,忽略 HTML 内容的其他部分,可以这样做:
curl -L https://example.com
-L
参数表示跟踪重定向(如果目标 URL 有重定向)。
4. 使用代理
你也可以通过代理服务器发送请求:
curl -x http://proxyserver:port https://api.example.com
🧑💻 总结
-
curl
是一个非常强大的工具,可以用于发送不同类型的 HTTP 请求,获取和发送数据,查看请求和响应的详细信息等。 -
它的常见选项包括
-X
(指定请求方法)、-d
(发送数据)、-H
(设置请求头)、-I
(查看响应头)、-o
(保存响应到文件)等。 -
curl
支持非常丰富的功能,适用于测试 API、与远程服务交互、文件上传下载等场景。