前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux环境下接口调试利器:cURL

Linux环境下接口调试利器:cURL

作者头像
小诸葛
发布2022-12-12 16:00:18
1.3K0
发布2022-12-12 16:00:18
举报
文章被收录于专栏:方法论方法论

在日常开发中,我们通常使用Postman做接口调试,但在一些环境下,无法使用图形界面工具来调试,此时就可以使用curl这个命令行工具来调试,curl的功能非常强大,如果是用熟练的话,完全可以取代Postman这类图形界面工具。

不带有任何参数时,curl就是发出GET请求。

代码语言:javascript
复制
curl http://www.xiaozhuge.com

回车后,服务器返回的内容会在控制台输出。

参数详解

-A

-A参数指定客户端的用户代理标头User-Agent,即请求头里的User-Agent。

-b

-b用于设置Cookie,设置多个Cookie时,使用英文分号分隔。

代码语言:javascript
复制
curl -b 'userName=xiaozhuge;userType=admin' http://www.xiaozhuge.com

如果Cookie内容较多,可以先写到一个文件中,然后-b指定文件路径。

代码语言:javascript
复制
curl -b cookies.txt http://www.xiaozhuge.com

-c

将服务器返回的Cookie写入本地文件中。

代码语言:javascript
复制
curl -c mycookies.txt http://www.xiaozhuge.com

-d

用于指定POST请求的请求体,多个参数用&分隔,也可以使用多个-d。

代码语言:javascript
复制
curl -d 'userName=xiaozhuge&userType=admin' http://www.xiaozhuge.com

代码语言:javascript
复制
curl -d 'userName=xiaozhuge' -d 'userType=admin' http://www.xiaozhuge.com

如果参数太多,可以先将参数保存在本地文件中,然后直接指定本地文件,用法:@本地文件名。

代码语言:javascript
复制
curl -d '@data.txt' http://www.xiaozhuge.com

--data-urlencode

等同于-d,用于指定POST请求的请求体,区别是会自动将发送的数据进行URL编码。

代码语言:javascript
复制
curl --data-urlencode 'userName=li yinlong' http://www.xiaozhuge.com

上面代码中,xiao zhuge之间有个空格,需要进行URL编码。

-F

用来向服务器上传文件,用法:file=@文件路径。

代码语言:javascript
复制
curl -F 'file=@a.png' http://www.xiaozhuge.com

上面的命令会给HTTP请求默认加上请求头Content-Type: multipart/form-data,然后将a.png作为file字段上传。

此外,-F还可以指定MIME类型。

代码语言:javascript
复制
curl -F 'file=@a.png;type=image/png' http://www.xiaozhuge.com

上面的命令指定MIME类型为image/png,否则curl会把MIME类型设为application/octet-stream。

-F还可以指定文件名。

代码语言:javascript
复制
curl -F 'file=@a.png;filename=userPhoto.png' http://www.xiaozhuge.com

-G

用来构造URL的查询字符串,会发送GET请求。

代码语言:javascript
复制
curl -G -d 'userName=xiaozhuge' -d 'userType=admin' http://www.xiaozhuge.com

上面的命令会发送一个GET请求,实际请求URL为

如果省略-G,则会发出POST请求。如果数据需要URL编码,可以添加参数--data-urlencode。

-H

用于添加HTTP请求头。

代码语言:javascript
复制
curl -H 'userToken:123' -H 'userType:admin' http://www.xiaozhuge.com

上面命令添加了两个请求头参数。

代码语言:javascript
复制
curl -d '{"userName":"xiaozhuge", "userType":"admin"}' -H 'Content-Type: application' http://www.xiaozhuge.com

上面的命令添加的HTTP请求头是Context-Type: application/json,然后-d指定发送的JSON数据。

-i

用于打印服务器响应的HTTP相应头,然后空一行,再输出网页源码。

代码语言:javascript
复制
curl -i www.baidu.com

-I

用于向服务器发出HEAD请求,然后会将服务器返回的HTTP响应头打印出来。也可以使用--head。

-k

用于跳过SSL检测。

代码语言:javascript
复制
curl -k https://www.xiaozhuge.com

不加-k时,如果SSL证书不可信,会报请求失败。

加上-k,请求正常返回。

-L

该参数会让HTTP请求跟随服务器的重定向,curl默认不跟随重定向。

代码语言:javascript
复制
curl -L -d 'userToken:123' http://www.xiaozhuge.com/

-o

将服务器的响应保存成一个文件。

代码语言:javascript
复制
curl -o baidu.html www.baidu.com

-O

将服务器的响应保存为文件,并将URL的最后部分作为文件名。

代码语言:javascript
复制
curl -O http://www.baidu.com/index.html

-u

用来设置服务器认证的用户名和密码,curl会将-u的参数转为HTTP请求头的

Authorization: Basic ZWxhc3RpYzpaMmRIQk5BblZy

代码语言:javascript
复制
curl -u 'elastic:Z2dHBNAnVr' 10.10.102.52:31219

或放在url里,curl能够识别。

代码语言:javascript
复制
curl http://elastic:Z2dHBNAnVr@10.10.102.52:31219

-v

用于输出通信的整个过程,常用于调试。

代码语言:javascript
复制
curl -v  -u elastic:Z2dHBNAnVr 10.10.102.52:31219

此外,还可以使用--trace,会输出原始的二进制数据,注意--trace后要加个中划线 -,否则会报错。

代码语言:javascript
复制
curl --trace -  -u elastic:Z2dHBNAnVr 10.10.102.52:31219

-x

用于指定请求的代理,如果没有指定代理协议,则默认使用HTTP代理协议。

代码语言:javascript
复制
curl -x xiaozhuge@123@myproxy.com:8080 http://www.xiaozhuge.com/

上面的命令,请求的代理使用HTTP协议。

-X

用于指定HTTP请求的方法。

代码语言:javascript
复制
curl -X PUT http://www.xiaozhuge.com/

本文参考自:

https://www.ruanyifeng.com/blog/2019/09/curl-reference.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小诸葛的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 等同于-d,用于指定POST请求的请求体,区别是会自动将发送的数据进行URL编码。
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档