application/x-www-form-urlencoded

最常见的一种 post请求,用 curl发起这种请求也很简单。

  1. curl http://localhost:9090/curl/basic -X POST -d 'hello=world'

multipart/form-data

这种请求一般是文件上传。

  1. curl localhost:9090/curl/upload -F file=@头像.txt
  2. curl localhost:9090/curl/upload -F file=@C:\Users\admin\Desktop\头像.txt

application/json

json格式的post请求,这种请求也很常见。
只适合Linux下使用curl

  1. curl http://localhost:9090/curl/json -X POST -d '{"userName": "lisi", "phoneNumber":"11070704545" }' --header "Content-Type: application/json"
  2. # --header 可以省略成-H
  3. curl http://localhost:9090/curl/json -X POST -d '{"userName":"lisi", "phoneNumber":"11070704545" }' -H "Content-Type: application/json"

跟 application/x-www-form-urlencoded 类型的 POST 请求类似,-d 参数值是 JSON 字符串,并且多了一个 Content-Type: application/json 指定发送内容的格式。
windows目录下使用curl参考以下文档

文件内容作为要提交的数据

如果要提交的数据是在文件里,通过 -d @filename 的方式来提交数据。这是 -d 参数的一种使用方式。
实际上就是把 -d 参数值写在命令行里,变成了写在文件里,@ 符号表明后面跟的是文件名,要读取这个文件的内容作为 -d 的参数。
注意:和 multipart/form-data 中上传文件不是一回事。
有一个 JSON 文件 data.json 内容如下:

  1. {
  2. "userName": "lisi",
  3. "phoneNumber": "11070704545",
  4. "strArray": ["ooo", "mmm"]
  5. }

就可以通过以下示例来提交数据。

  1. curl localhost:9090/curl/json -X POST -d @data.json --header "Content-Type: application/json"
  2. curl localhost:9090/curl/json -X POST -d @C:\Users\admin\Desktop\data.json --header "Content-Type: application/json"
  3. curl localhost:9090/curl/json -X POST -d @data.json -H "Content-Type: application/json"

等同于:

  1. curl localhost:9090/curl/json -X POST -d '{"userName":"lisi","phoneNumber":"11070704545", "strArray": ["ooo", "mmm"]}' --header "Content-Type: application/json"
  2. curl localhost:9090/curl/json -X POST -d '{"userName":"lisi","phoneNumber":"11070704545", "strArray": ["ooo", "mmm"]}' -H "Content-Type: application/json"

application/x-www-form-urlencoded 方式提交文件内容

有一个文件 data.txt 内容如下:

  1. userName=lisi&phoneNumber=11070704545&strArray[]=ooo&arry[]=mmm

就可以通过以下示例来提交数据。

  1. curl localhost:3000/api/basic -X POST -d @data.txt

等同于:

  1. curl localhost:3000/api/basic -X POST -d 'userName=lisi&phoneNumber=11070704545&strArray[]=ooo&arry[]=mmm'

设置header

  1. curl localhost:3000/api/basic \
  2. -H "Content-Type: application/json" \
  3. -H "userId: 454" \
  4. -H "token: af0d8773933eaeffc81d97924bd2a8fc \
  5. ......

保存响应结果到文件

  1. curl http://hostname:ip/get/path -H "Content-Type:application/json" > /save/to/path/filename.json

命令行参数

-A

-A参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version]。
将User-Agent改成 Chrome 浏览器

  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://google.com

移除User-Agent标头。

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

通过-H参数直接指定标头,更改User-Agent。

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