curl 是一种使用URL从服务器获取数据或者向服务器传输数据的工具。在做一些简单的请求测试的时候可以直接在命令行执行curl
指令,而不用打开Postman之类的App,减少一些操作步骤。
curl
支持的协议有很多,比如HTTP
、HTTPS
、WS
、WSS
等,本文以HTTP
协议的URL为例说明一些用法。
- 简单的
GET
请求:
shell
$ curl http://localhost:8080/hello
hello world!
- 使用
-X
(--request
)指定请求方法:
shell
$ curl -X POST localhost:8080/user/login
不使用-X
默认是GET
请求。
- 使用
-i
(--include
)将响应头中的数据打印出来:
shell
$ curl -i -X GET "localhost:8080/echo?name=孙悟空&address=花果山水帘洞"
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Thu, 14 Dec 2023 13:32:03 GMT
Content-Length: 60
{"data":{"name":"孙悟空","address":"花果山水帘洞"}}
- 使用
-v
(--verbose
)打印出一些冗长的信息,调试的时候可以使用:
shell
curl -v localhost:8080/孙悟空/987fbc97-4bed-5078-9f07-9141ba07c9f3
* Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /%e5%ad%99%e6%82%9f%e7%a9%ba/987fbc97-4bed-5078-9f07-9141ba07c9f3 HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=utf-8
< Date: Fri, 15 Dec 2023 03:13:17 GMT
< Content-Length: 73
<
* Connection #0 to host localhost left intact
{"data":{"id":"987fbc97-4bed-5078-9f07-9141ba07c9f3","name":"孙悟空"}}
- 使用
-d
(--data
)在POST
请求中携带数据:
shell
$ curl -X POST -d '{"name": "孙悟空", "address": "花果山水帘洞"}' localhost:8080/echo \
> -H "Content-Type:application/json"
{"data":{"name":"孙悟空","address":"花果山水帘洞"}}
或者:
shell
$ curl -X POST -d "name=孙悟空&address=花果山水帘洞" localhost:8080/echo
{"data":{"name":"孙悟空","address":"花果山水帘洞"}}
因为GET
的数据是在url
中携带的,所以直接这样请求:
shell
$ curl -i -X GET "localhost:8080/echo?name=孙悟空&address=花果山水帘洞"
- 使用
-H
(--header
) 设置请求头:
shell
$ curl -X POST -d '{"name": "孙悟空", "address": "花果山水帘洞"}' localhost:8080/echo \
> -H "Content-Type:application/json"
{"data":{"name":"孙悟空","address":"花果山水帘洞"}}
-F
(--form
)模拟用户按下提交按钮后填写的表单,使用-F
后的Content-Type
为multipart/form-data
。
shell
$ curl -X POST localhost:8080/upload \
> -F "upload=@/Users/path/上传用的文件.txt"
1 files uploaded!