curl详解

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-Typeapplication/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、与远程服务交互、文件上传下载等场景。

相关推荐
LucDelton5 分钟前
Java 读取无限量文件读取的思路
java·运维·网络
TheNextByte126 分钟前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone
Kaede638 分钟前
提示dns服务器未响应,需要做哪些事?
运维·服务器
CRUD酱40 分钟前
CentOS的yum仓库失效问题解决(换镜像源)
linux·运维·服务器·centos
Wasim4041 小时前
【渗透测试】SQL注入
网络·数据库·sql
laplace01231 小时前
Claude Code 逆向工程报告 笔记(学习记录)
数据库·人工智能·笔记·学习·agent·rag
We....1 小时前
鸿蒙与Java跨平台Socket通信实战
java·服务器·tcp/ip·arkts·鸿蒙
zly35001 小时前
VMware vCenter Converter Standalone 转换Linux系统,出现两个磁盘的处理
linux·运维·服务器
珠海西格1 小时前
1MW光伏项目“四可”装置改造:逆变器兼容性评估方法详解
大数据·运维·服务器·云计算·能源
..过云雨1 小时前
五种IO模型与非阻塞IO
网络·网络协议·tcp/ip