在日常开发中,我们通常使用Postman做接口调试,但在一些环境下,无法使用图形界面工具来调试,此时就可以使用curl这个命令行工具来调试,curl的功能非常强大,如果是用熟练的话,完全可以取代Postman这类图形界面工具。
不带有任何参数时,curl就是发出GET请求。
curl http://www.xiaozhuge.com
回车后,服务器返回的内容会在控制台输出。
参数详解
-A
-A参数指定客户端的用户代理标头User-Agent,即请求头里的User-Agent。
-b
-b用于设置Cookie,设置多个Cookie时,使用英文分号分隔。
curl -b 'userName=xiaozhuge;userType=admin' http://www.xiaozhuge.com
如果Cookie内容较多,可以先写到一个文件中,然后-b指定文件路径。
curl -b cookies.txt http://www.xiaozhuge.com
-c
将服务器返回的Cookie写入本地文件中。
curl -c mycookies.txt http://www.xiaozhuge.com
-d
用于指定POST请求的请求体,多个参数用&分隔,也可以使用多个-d。
curl -d 'userName=xiaozhuge&userType=admin' http://www.xiaozhuge.com
或
curl -d 'userName=xiaozhuge' -d 'userType=admin' http://www.xiaozhuge.com
如果参数太多,可以先将参数保存在本地文件中,然后直接指定本地文件,用法:@本地文件名。
curl -d '@data.txt' http://www.xiaozhuge.com
--data-urlencode
curl --data-urlencode 'userName=li yinlong' http://www.xiaozhuge.com
上面代码中,xiao zhuge之间有个空格,需要进行URL编码。
-F
用来向服务器上传文件,用法:file=@文件路径。
curl -F 'file=@a.png' http://www.xiaozhuge.com
上面的命令会给HTTP请求默认加上请求头Content-Type: multipart/form-data,然后将a.png作为file字段上传。
此外,-F还可以指定MIME类型。
curl -F 'file=@a.png;type=image/png' http://www.xiaozhuge.com
上面的命令指定MIME类型为image/png,否则curl会把MIME类型设为application/octet-stream。
-F还可以指定文件名。
curl -F 'file=@a.png;filename=userPhoto.png' http://www.xiaozhuge.com
-G
用来构造URL的查询字符串,会发送GET请求。
curl -G -d 'userName=xiaozhuge' -d 'userType=admin' http://www.xiaozhuge.com
上面的命令会发送一个GET请求,实际请求URL为
如果省略-G,则会发出POST请求。如果数据需要URL编码,可以添加参数--data-urlencode。
-H
用于添加HTTP请求头。
curl -H 'userToken:123' -H 'userType:admin' http://www.xiaozhuge.com
上面命令添加了两个请求头参数。
curl -d '{"userName":"xiaozhuge", "userType":"admin"}' -H 'Content-Type: application' http://www.xiaozhuge.com
上面的命令添加的HTTP请求头是Context-Type: application/json,然后-d指定发送的JSON数据。
-i
用于打印服务器响应的HTTP相应头,然后空一行,再输出网页源码。
curl -i www.baidu.com
-I
用于向服务器发出HEAD请求,然后会将服务器返回的HTTP响应头打印出来。也可以使用--head。
-k
用于跳过SSL检测。
curl -k https://www.xiaozhuge.com
不加-k时,如果SSL证书不可信,会报请求失败。
加上-k,请求正常返回。
-L
该参数会让HTTP请求跟随服务器的重定向,curl默认不跟随重定向。
curl -L -d 'userToken:123' http://www.xiaozhuge.com/
-o
将服务器的响应保存成一个文件。
curl -o baidu.html www.baidu.com
-O
将服务器的响应保存为文件,并将URL的最后部分作为文件名。
curl -O http://www.baidu.com/index.html
-u
用来设置服务器认证的用户名和密码,curl会将-u的参数转为HTTP请求头的
Authorization: Basic ZWxhc3RpYzpaMmRIQk5BblZy
curl -u 'elastic:Z2dHBNAnVr' 10.10.102.52:31219
或放在url里,curl能够识别。
curl http://elastic:Z2dHBNAnVr@10.10.102.52:31219
-v
用于输出通信的整个过程,常用于调试。
curl -v -u elastic:Z2dHBNAnVr 10.10.102.52:31219
此外,还可以使用--trace,会输出原始的二进制数据,注意--trace后要加个中划线 -,否则会报错。
curl --trace - -u elastic:Z2dHBNAnVr 10.10.102.52:31219
-x
用于指定请求的代理,如果没有指定代理协议,则默认使用HTTP代理协议。
curl -x xiaozhuge@123@myproxy.com:8080 http://www.xiaozhuge.com/
上面的命令,请求的代理使用HTTP协议。
-X
用于指定HTTP请求的方法。
curl -X PUT http://www.xiaozhuge.com/
本文参考自:
https://www.ruanyifeng.com/blog/2019/09/curl-reference.html