curl 是一个十分强大的命令行工具

curl 中的 c 表示 client,因此 curl 即客户端(client)的 URL 工具。

curl 是一个十分强大的命令行工具,如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。

本文只介绍它作为接口测试工具的相关使用方法,作为日常的参考,方便日后查阅。


一个示例

1
$curl -X POST "127.0.0.1::8080/example" -H "Content-Type: application/json" -d '{"key1":["value1","value2","value3"],"key2": "value","key3": "value"}'

其中

-X 指定请求方法、-H 添加请求头信息、-d 用于发送 POST 请求的数据

URL不需要参数拼接

参数


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

1
$curl https://www.example.com

-X

指定 HTTP 请求的方法

1
$curl -X POST https://www.example.com

-H

添加 HTTP 请求的请求头

1
$curl  "127.0.0.1::8080/example" -H "Content-Type: application/json"

当有多个请求头参数时,可以添加两个 -H 参数

1
$curl  "127.0.0.1::8080/example" -H "Content-Type: application/json" -H "uuid: 31652d14-c8f5-4455-9339-f3d4c2da4971"

也可以写在一个 -H 参数中,使用json格式排列

1
$curl  "127.0.0.1::8080/example" -H '{"Content-Type": "application/json","uuid": "31652d14-c8f5-4455-9339-f3d4c2da4971"}'

-d

用于发送 POST 请求的数据体

1
$curl "127.0.0.1::8080/example" -H "Content-Type: application/json" -d '{"key1":["value1","value2","value3"],"key2": "value","key3": "value"}'

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


**-d** 参数还可以读取本地文本文件的数据,作为请求参数
1
$curl -d '@data.txt' https://google.com/login

-A

指定客户端的用户代理标识

curl 的默认用户代理字符串是 curl/[version]

1
$curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' 'https://example.com'

上面命令将User-Agent改成 Chrome 浏览器。

1
$curl -A '' https://google.com

上面命令会移除User-Agent标头。

也可以通过 -H 参数直接指定请求头中 User-Agent 参数,以达到更改用户代理标识的目的

1
$curl -H 'User-Agent: php/1.0' https://google.com

-i

打印出 HTTP 请求的响应头

1
$curl -i https://www.example.com

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


-o

将服务器的回应保存成文件

1
$curl -o example.html https://www.example.com

上面命令将www.example.com保存成example.html


-O

将服务器回应保存成文件,并将 URL 的最后部分当作文件名。 可以作为下载工具使用

1
$curl -O https://www.example.com/foo/bar.html

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


-v

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

1
$curl -v https://www.example.com

参考链接

阮一峰–curl 的用法指南