背景

21年底开始在公司一直负责组里门户网站的开发,在开发Web项目过程中经常需要进发送行http请求进行测试,测试的过程中经常需要使用到curl指令,之前进行了系统性的整理,今天贴到自己的博客上面。curl 是常用的命令行工具,用来请求 Web 服务器,然后得到相应的响应数据,它的名字就是客户端(client)的 URL 工具的意思,功能和postman类似,完全可以取代 Postman 这一类的图形界面工具。

功能与参数 (按照字母顺序排序)

-A 指定Header中的用户代理头

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

举例:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

-b 发送Cookie

-b参数用来向服务器发送 Cookie。

举例:

curl -b 'userInfo=nd23905nk43' https://k.com

上面命令会生成一个标头Cookie: userInfo=nd23905nk43,向服务器发送一个名为userInfo、值为nd23905nk43的 Cookie。

-c 保存Cookie

-c 参数将服务器设置的 Cookie 写入一个文件。

举例:

curl -c cookies.txt https://k.com

上面命令将服务器的 HTTP 回应所设置 Cookie 写入文本文件cookies.txt。

-d POST 请求的数据体

-d参数用于发送 POST 请求的数据体
举例:

curl -d'login=emma&password=123'-X POST https://k.com/login
或者
$ curl -d 'login=emma' -d 'password=123' -X POST  https://k.com/login

使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。

-e 设置 Header中的Referer

-e参数用来设置 HTTP 的标头Referer,表示请求的来源。

举例:

curl -e 'https://k.com?q=example' https://www.example.com

-H参数可以通过直接添加标头Referer,达到同样效果。

举例:

curl -H 'Referer: https://k.com?q=example' https://www.example.com

-H 添加Header

-H 添加Header

举例:

curl -H 'Accept-Language: en-US' https://k.com

上面命令添加 HTTP 标头Accept-Language: en-US。

-i 打印响应Header及源码

-i参数打印出服务器回应的 HTTP 标头。

举例:

curl -i https://www.k.com

上面命令收到服务器回应后,先输出服务器回应的标头,然后空一行,再输出网页的源码。

举例:

curl -i https://www.k.com

-I 发出Header请求

-I参数向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来。

举例:

curl -I https://www.k.com

-L 重定向

-L参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向,添加-L即可跟随重定向。

举例:

curl -L https://www.k.com

-O 保存响应为文件

-O参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名。

举例:

curl -O https://www.k.com/foo/bar.html

上面命令将服务器回应保存成文件,文件名为bar.html

-u 设置用户名和密码

-u参数用来设置服务器认证的用户名和密码。

举例:

curl -u 'bob:12345' https://google.com/login

-v 输出通信过程

-v参数输出通信的整个过程,用于调试。

举例:

curl -v https://www.k.com

-X 指定请求方法

-X参数指定 HTTP 请求的方法

举例:

curl -X POST https://www.k.com

常用指令

以下是在实际调试的时候用的一些指令

POST请求:

curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"roleCode":"R000002","authUserList":["liwenlong"],"a":"R000002","grantReason":"123"}'  127.0.0.1:8080/rest/bonding/auth/admin/role/grant  -H 'username:liwenlong'

GET请求

curl -H "Accept: application/json" -H "Content-type: application/json" -X GET 127.0.0.1:8080/rest/bonding/req/admin/info/588 -H 'username:liwenlong'

DELETE请求

curl -H "Accept: application/json" -H "Content-type: application/json" -X DELETE 127.0.0.1:8080/rest/bonding/req/ordinary/info/530 -H 'username:liwenlong'