目录
1.GET请求
1.1 形式1:
curl http://localhost:8080?param1=XXX\¶m2=XXX
1.2 形式2:
curl 'http://localhost:8080?param1=XXX¶m2=XXX'
注意:如果有多个请求参数,在不使用引号的情况下,连接参数之间的 &
前面要加反斜杠\
转义一下,如:\&
2.POST请求
2.1 无入参:
curl -X POST http://localhost:8080
2.2 form传参:
-
file
:传文件示例; -
dirName
:传字符串示例。
写法1: 直接拼接在地址后面。
- 注意:多个参数时要么将地址用引号包裹,要么用
\&
对连接符进行转义。
curl -X POST 'http://localhost:8080/save?key1=value1&key2=value2'
写法2: 使用 -d
或 --data
选项。
- 如果使用 -d 或 --data 选项,你 需要确保特殊字符被正确地进行 URL 编码。
&
、+
、=
都是需要编码的特殊字符。
# key1设置为1&+= key2设置为10
curl -X POST -d 'key1=1%26%2B%3D&key2=10' http://localhost:8080/save
(在上面这个示例中,1&+=
被正确地编码为 1%26%2B%3D
,可以通过 js 的 encodeURIComponent()
方法实现。)
写法3: 使用 --form
选项。
- 如果使用 --form 选项,curl 会自动处理 URL 编码,因此你 不需要手动编码特殊字符。
# key1设置为1&+= key2设置为10
curl -X POST --form 'key1=1&+=' --form 'key2=10' http://localhost:8080/save
2.3 form传参(文件):
-
file
:传文件示例; -
dirName
:传字符串示例。
curl -X POST -F 'file=@/tmp/test.txt' -F 'dirName="/tmp"' http://localhost:8080/upload
2.4 json入参:
curl -H 'Content-Type:application/json' -X POST -d '{"param1":123,"param2":"hello"}' http://localhost:8080
2.5 json文件入参:
curl -H 'Content-Type:application/json' -X POST -d @test.json http://localhost:8080
3.请求计时
3.1 time命令(Linux):
time
命令是Linux系统命令,用于测量一个命令的运行时间。
real
实际使用时间(real time)user
用户态使用时间(the process spent in user mode)sys
内核态使用时间(the process spent in kemel mode)
time curl http://localhost:8080
执行结果:
real 0m0.167s
user 0m0.000s
sys 0m0.031s
3.2 -w 显示响应时长
-w
参数,操作完成后在返回信息尾部追加指定的内容。要追加的内容可以是字符串,也可以是相应信息的相关变量。
time_namelookup
: DNS 服务器域名解析的时间;time_connect
: client 发出请求,到 c/s 建立TCP 的时间;里面包括 DNS 解析的时间;time_starttransfer
: client 发出请求;到 server 响应发出第一个字节开始的时间;包括前面的2个时间;time_total
: 请求发起到链接关闭总耗时。
使用示例:
curl -X GET -w "\ntime_namelookup:%{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "https://www.baidu.com"
# time_namelookup: DNS 服务器域名解析的时间
# time_connect: client 发出请求,到 c/s 建立TCP 的时间;里面包括 DNS 解析的时间
# time_starttransfer: client 发出请求;到 server 响应发出第一个字节开始的时间;包括前面的2个时间
# time_total: 请求发起到链接关闭总耗时
执行结果:
time_namelookup:0.013070
time_connect: 0.018061
time_starttransfer: 0.047114
time_total: 0.047276
4.-s 不显示 %Total% 等统计信息。
-s
参数,安静模式,不显示 %Total% 等统计信息。
使用示例:
curl -s http://localhost:8080
5 -v 显示详细请求信息
-v
参数,可以显示一次http通信的整个过程,包括端口连接和http request头信息。
使用示例:
curl -x http://localhost:8080
执行结果:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 182.61.200.7:80...
* Connected to www.baidu.com (182.61.200.7) port 80 (#0)
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.87.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2381
< Content-Type: text/html
< Date: Sat, 11 Feb 2023 08:17:52 GMT
< Etag: "588604c8-94d"
< Last-Modified: Mon, 23 Jan 2017 13:27:36 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
{ [2381 bytes data]
100 2381 100 2381 0 0 91739 0 --:--:-- --:--:-- --:--:-- 101k
整理完毕,完结撒花~
参考地址:
1.Linux curl命令最全详解,https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/90764856#t1