IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> CURL构建REST请求 -> 正文阅读

[网络协议]CURL构建REST请求



一、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构建不同的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 '<user><login>ann</login><password>123</password></user>' -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

在这里插入图片描述

二、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

在这里插入图片描述

五、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进行学习。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:20:11  更:2022-04-18 18:22:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:40:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码