CURL构建REST请求


CURL命令使用

  • 一、curl命令是什么 ?
  • 二、Make a POST Request(构建POST请求)
  • 二、Add HTTP Headers
  • 三、Set Cookies
  • 四、Print the Response Headers
  • 五、Save the Response to a File
  • 总结


一、curl命令是什么 ?

(1). curl 是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl

(2). curl 作为常用的命令行工具,在程序开发或者测试阶段常用curl命令用来请求 Web 服务器,curl支持的通信协议有HTTP、HTTPS、TFTP、SFTP、FILE、LDAP、LDAPS、IMAP、POP3、SMTP等。

(3). curl 在Windows,MacOS和大多数Linux发行版中作为默认设置提供,可以在终端输入curl -help查看一些关于curl的操作。
CURL构建REST请求_第1张图片


提示:以下内容将重点介绍如何使用curl构建不同的web请求。

二、Make a POST Request(构建POST请求)

默认情况下,curl发送的是GET请求,如果要使用curl构建一个POST请求,需要添加 -X POST命令行参数,如果要向POST请求添加数据,那么可以使用 - d 命名行参数,如果要改变Content-Type信息,可以使用 - H 参数。
以下例子将演示CURL构建POST的常用方式:

1.发送一个不携带数据的POST请求:

curl -X POST url(请求路径)

2.发送一个携带数据的POST请求(-d 参数会强制curl发送POST请求,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded):

curl -d "id=10&username=seeker&age=20"  -X POST url(请求路径)
或者
curl -d "id=10" -d "username=seeker" -d "age=20" url(请求路径)

3.发送一个携带JSON数据格式的POST请求:

提示:下面两种方式应该都是一样的,一个是JSON数据使用单引号包裹,一个是使用双引号包裹。使用双引号包裹的数据需要对JSON里的双引号进行转移。但是在Windows上测试时,我发现第一种无法被正确解析(可能是版本问题),所以在此处写了第二种方式,第二种在windows在可以正常解析。

curl  -d '{"id":"10", "name":"seeler", "phone":"1315879"}'  -H "Content-Type: application/json"  http://localhost:8081/seeker/static/data/test
或者
curl -d "{\"id\": \"10\", \"name\": \"seeker\", \"phone\": \"13157\"}" -H "Content-Type: application/json" http://localhost:8081/seeker/static/data/test

4.发送一个携带XML数据格式的POST请求:

curl -d 'ann123' -H 'Content-Type: text/xml' url(请求路径)

5.发送一个带文件的POST请求:

提示:-F参数用来向服务器上传二进制文件,当加上-F参数后,HTTP 请求会自动加上Content-Type: multipart/form-data。本次演示服务端代码采用JAVA,定义接收文件参数名为uploadFile,在curl中将log.txt作为uploadFile字段上传。

    //服务器端代码
    @RequestMapping(method = RequestMethod.POST,value = "fileTest",produces = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String uploadTest(@RequestParam("uploadFile") MultipartFile uploadFile){
      uploadFile.getOriginalFilename();
      return "success";
    }
//curl请求
curl -F "uploadFile=@C:/Users/seeker/initData/log.txt" http://localhost:8081/seeker/static/data/fileTest

6.发送一个带文件的POST请求,并修改文件名称:

提示:增加了filename属性,指定文件重命名后的名称。通过debug可以看到文件已经更改为log20220414.txt

curl -F "uploadFile=@C:/Users/seeler/initdata/log.txt;filename=log20220414.txt" http://localhost:8081/seeker/static/data/fileTest

CURL构建REST请求_第2张图片

二、Add HTTP Headers

1.如果想要向请求头中添加属性,可以在构建REST请求时添加-H参数:
例如:向header中添加Accept-Language属性

curl -H 'Accept-Language: en-US' http://localhost:8081/seeker/static/data/testHeader

2.如果要向请求头添加多条属性,在构建REST请求时使用多个-H分开添加:

curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' http://localhost:8081/seeker/static/data/testHeaders

3.如果要向请求头添加一个空属性,在构建REST请求时不必写上属性的值即可:
例如:添加一个名为Brand的空属性

curl -H 'Brand;' http//localhost:8081/seeker/static/data/testHeaders

三、Set Cookies

默认情况下,curl构建的REST请求不会自动携带Cookies相关的信息,当然你也可以使用 -b ‘name = value’ 命令行参数来设置Cookies信息。

1.构建REST请求并添加Cookies:

curl -b 'session=abcdef' http//localhost:8081/seeker/static/data/cookies

2.将请求响应的Cookies保存到文件中:
例如:将请求百度的Cookies信息放入cookies.txt文件中

curl -c cookies.txt https://www.baidu,com

3.从文件中加载cookies信息:

curl -b cookies.txt https://baidu.com

四、Print the Response Headers

默认情况下CURL构建的REST请求不会打印响应头信息,只会打印响应体信息,如果你想让CURL能够打印响应头和响应体信息,可以使用 -i 命令参数

1.打印响应体和响应头信息:

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

CURL构建REST请求_第3张图片

五、Save the Response to a File

默认情况下CURL构建的REST请求只会将响应信息打印到终端上显示,如果想要将响应信息保存到文件中,可以使用 -o file 命令参数。

1.将请求响应信息保存到文件中:

curl -o response.txt  http://localhost:8081/seeker/static/data/hello

在这里插入图片描述
查看文件内容:
在这里插入图片描述

总结

本章内容并未演示GET请求,因为CURL默认就是采用GET请求,所以不再演示。熟练的使用CURL构建REST请求,那么可以抛弃很多图形化请求工具(比如POSTMAN),熟练使用CURL也是一个开发或者测试人员需要掌握的。如果想了解更多CURL相关知识,可以访问:Curl Cookbook进行学习。

你可能感兴趣的:(java,bash)