💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
- 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 一、基础请求参数
- 1. `-X` 或 `--request`
- 2. `-d` 或 `--data`
- 3. `-H` 或 `--header`
- 二、输出控制参数
- 1. `-i` 或 `--include`
- 2. `-o` 或 `--output`
- 3. `-s` 或 `--silent`
- 三、连接与传输参数
- 1. `-L` 或 `--location`
- 2. `-C` 或 `--continue-at`
- 3. `-T` 或 `--upload-file`
- 四、SSL/TLS 相关参数
- 1. `-k` 或 `--insecure`
- 2. `-E` 或 `--cert`
- 3. `--cacert`
- 五、性能与调试参数
- 1. `-w` 或 `--write-out`
- 2. `-v` 或 `--verbose`
- 六、实际应用案例
- 1. 接口测试
- 2. 网络抓包与调试
- 3. 文件下载与上传
在现代网络开发和运维工作中,curl
命令是一个不可或缺的工具。它是一个利用 URL 语法在命令行下工作的文件传输工具,支持多种协议,如 HTTP、HTTPS、FTP 等。通过各种参数的灵活组合,curl
能够实现丰富的网络请求功能,帮助我们进行接口测试、数据抓取、网络调试等操作。
一、基础请求参数
1. -X
或 --request
该参数用于指定请求方式,如 GET、POST、PUT、DELETE 等。默认情况下,curl
使用 GET 请求方式。例如:
curl -X POST http://example.com/api/data
上述命令向 http://example.com/api/data
发送一个 POST 请求。
2. -d
或 --data
用于向服务器发送数据,常与 POST 请求配合使用。数据可以是键值对形式,也可以是 JSON 格式等。例如:
curl -X POST -d "name=Kimi&age=25" http://example.com/api/user
该命令向服务器发送一个包含表单数据的 POST 请求,请求体中包含 name
和 age
两个字段。
3. -H
或 --header
用于添加自定义请求头。在与服务器进行交互时,有时需要设置特定的请求头,如 Content-Type
、Authorization
等。例如:
curl -H "Content-Type: application/json" -d '{"name":"Kimi","age":25}' http://example.com/api/user
这里设置了请求头 Content-Type
为 application/json
,并发送 JSON 格式的数据。
二、输出控制参数
1. -i
或 --include
在输出中包含 HTTP 响应头。这对于调试和查看服务器返回的完整信息非常有用。例如:
curl -i http://example.com
执行后,不仅会显示网页内容,还会显示 HTTP 响应状态码、响应头等信息。
2. -o
或 --output
将输出保存到指定文件中。例如:
curl -o example.html http://example.com
该命令将 http://example.com
的内容保存到本地的 example.html
文件中。
3. -s
或 --silent
静默模式,不输出错误和进度信息,只输出服务器的响应内容。这对于在脚本中使用 curl
时,避免输出干扰非常有帮助。例如:
curl -s http://example.com
三、连接与传输参数
1. -L
或 --location
自动处理服务器的重定向。当服务器返回 301、302 等重定向响应时,curl
会自动跟随重定向的 URL 继续请求。例如:
curl -L http://example.com/old-page
如果 http://example.com/old-page
被重定向到 http://example.com/new-page
,curl
会自动请求新的 URL。
2. -C
或 --continue-at
断点续传。在下载大文件时,如果连接中断,可以使用该参数从上次中断的位置继续下载。例如:
curl -C - -o bigfile.zip http://example.com/bigfile.zip
如果之前下载过该文件且中断了,curl
会从上次下载的位置继续下载。
3. -T
或 --upload-file
用于上传文件。可以将本地文件上传到服务器指定的位置。例如:
curl -T localfile.txt ftp://example.com/upload
将本地的 localfile.txt
文件上传到 FTP 服务器的 upload
目录下。
四、SSL/TLS 相关参数
1. -k
或 --insecure
允许 curl
与使用自签名证书或证书链不完整的 HTTPS 服务器进行交互,忽略证书验证错误。在测试环境中或对证书安全要求不高的场景下,该参数比较有用。例如:
curl -k https://example.com
但需要注意,使用该参数会降低安全性,因为无法验证服务器的身份。
2. -E
或 --cert
指定客户端证书文件。在与需要客户端证书验证的 HTTPS 服务器交互时,需要使用该参数。例如:
curl -E client.crt https://example.com
这里 client.crt
是客户端证书文件。
3. --cacert
指定 CA 证书文件。用于验证服务器证书的有效性。例如:
curl --cacert ca.crt https://example.com
ca.crt
是 CA 证书文件,通过它来验证服务器证书是否由可信的 CA 签发。
五、性能与调试参数
1. -w
或 --write-out
自定义输出格式,用于输出请求和响应的相关信息,如耗时、状态码等。这对于性能测试和调试非常有帮助。例如:
curl -w "status_code: %{http_code}, time_total: %{time_total}" http://example.com
执行后,会输出 HTTP 状态码和请求总耗时。
2. -v
或 --verbose
启用详细模式,输出 curl
与服务器交互的详细信息,包括请求头、响应头、SSL 握手信息等。这对于调试网络问题和查看请求过程非常有用。例如:
curl -v http://example.com
执行后,会显示详细的请求和响应过程。
六、实际应用案例
1. 接口测试
假设我们要测试一个 RESTful API,该 API 提供用户信息的查询和更新功能。首先,我们可以使用 curl
发送 GET 请求查询用户信息:
curl -X GET http://api.example.com/users/1
然后,使用 POST 请求更新用户信息:
curl -X POST -H "Content-Type: application/json" -d '{"name":"Kimi_updated","age":26}' http://api.example.com/users/1
通过查看返回的状态码和响应内容,可以判断接口是否正常工作。
2. 网络抓包与调试
当我们遇到网络请求异常时,可以使用 curl -v
来抓取请求和响应的详细信息。例如,某个请求总是返回 404 错误,我们可以执行:
curl -v http://example.com/problematic-page
通过查看输出的详细信息,我们可以检查请求头是否正确、路径是否正确、服务器返回的响应头等,从而定位问题所在。
3. 文件下载与上传
使用 curl
下载文件:
curl -o myfile.zip http://example.com/files/myfile.zip
上传文件到 FTP 服务器:
curl -T localfile.txt ftp://ftp.example.com/upload --user username:password
这里还使用了 --user
参数来指定 FTP 服务器的用户名和密码。
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙