目录
一、命令概述
二、基本特点
1、直观和友好的命令语句
2、内置 JSON 支持
3、支持多种请求方法
4、支持 HTTPS、代理和授权验证
5、支持多种请求数据格式
6、自定义 headers 头
7、持久 sessions 存储
8、插件支持
三、安装
1、对于基于 Debian 的系统(如 Ubuntu)
2、对于基于 RPM 的系统(如 CentOS)
3、对于其他系统
四、语法和使用
1、命令
(1)语法如下
(2)帮助信息
2、发送 GET 请求
3、发送 POST 请求并附带 JSON 数据
4、发送带有自定义 headers 的请求
5、从文件中上传内容
6、查看请求信息
五、其他功能
1、支持下载
2、会话持久化
3、自定义请求头
六、示例
1. 发送GET请求
2. 发送带有参数的GET请求
3. 发送POST请求
(1)发送JSON格式的POST请求
(2)显式指定Content-Type为application/json
4. 发送自定义请求头
5. 发送表单数据
6. 上传文件
7. 查看请求的详细信息
8. 认证
七. 总结
一、命令概述
HTTPie 是一个简单易用的命令行 HTTP 客户端,它为 CLI(命令行界面)与 Web 服务的交互提供了一个更为友好的界面。 类似于curl的命令行HTTP客户端,但操作更简单,支持颜色化输出和会话持久化等功能。
二、基本特点
1、直观和友好的命令语句
HTTPie 提供了简单自然的表述来发送任意 HTTP 请求,并且支持格式化且高亮显示输出内容。
2、内置 JSON 支持
无需额外转换,直接发送和接收 JSON 数据。
3、支持多种请求方法
GET、POST、PUT、DELETE 等。
4、支持 HTTPS、代理和授权验证
确保通信的安全性和灵活性。
5、支持多种请求数据格式
除了 JSON,还支持表单和文件上传。
6、自定义 headers 头
可以方便地设置和修改 HTTP 请求头。
7、持久 sessions 存储
支持对同一 host 进行请求之间的持久通信。
8、插件支持
扩展性强,可以通过插件增加更多功能。
三、安装
HTTPie 支持多种操作系统,包括 Linux、macOS 和 Windows。在 Linux 上,可以通过包管理器来安装:
1、对于基于 Debian 的系统(如 Ubuntu)
可以使用 apt-get install httpie 命令进行安装。
2、对于基于 RPM 的系统(如 CentOS)
可以使用 yum install httpie 命令进行安装。实际操作如下:
[root@ecs-52a1 home]# http
bash: http: command not found
[root@ecs-52a1 121yunwei]# yum install httpie
Loaded plugins: fastestmirror
Determining fastest mirrors
base | 3.6 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/3): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(2/3): epel/x86_64/primary_db | 8.7 MB 00:00:00
(3/3): updates/7/x86_64/primary_db | 27 MB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package httpie.noarch 0:1.0.3-1.el7 will be installed
--> Processing Dependency: python36-pygments for package: httpie-1.0.3-1.el7.noarch
--> Processing Dependency: python36-requests for package: httpie-1.0.3-1.el7.noarch
--> Running transaction check
---> Package python36-pygments.noarch 0:2.4.2-1.el7 will be installed
---> Package python36-requests.noarch 0:2.14.2-2.el7 will be installed
--> Processing Dependency: python36-chardet for package: python36-requests-2.14.2-2.el7.noarch
--> Processing Dependency: python36-idna for package: python36-requests-2.14.2-2.el7.noarch
--> Processing Dependency: python36-urllib3 for package: python36-requests-2.14.2-2.el7.noarch
--> Running transaction check
---> Package python36-chardet.noarch 0:3.0.4-1.el7 will be installed
---> Package python36-idna.noarch 0:2.10-1.el7 will be installed
---> Package python36-urllib3.noarch 0:1.25.6-2.el7 will be installed
--> Processing Dependency: python36-six >= 1.12.0 for package: python36-urllib3-1.25.6-2.el7.noarch
--> Processing Dependency: python36-pysocks for package: python36-urllib3-1.25.6-2.el7.noarch
--> Running transaction check
---> Package python36-pysocks.noarch 0:1.6.8-7.el7 will be installed
---> Package python36-six.noarch 0:1.14.0-3.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved==============================================================================================================================================================Package Arch Version Repository Size
==============================================================================================================================================================
Installing:httpie noarch 1.0.3-1.el7 epel 103 k
Installing for dependencies:python36-chardet noarch 3.0.4-1.el7 epel 190 kpython36-idna noarch 2.10-1.el7 epel 99 kpython36-pygments noarch 2.4.2-1.el7 epel 1.5 Mpython36-pysocks noarch 1.6.8-7.el7 epel 30 kpython36-requests noarch 2.14.2-2.el7 epel 112 kpython36-six noarch 1.14.0-3.el7 epel 34 kpython36-urllib3 noarch 1.25.6-2.el7 epel 178 kTransaction Summary
==============================================================================================================================================================
Install 1 Package (+7 Dependent packages)Total download size: 2.2 M
Installed size: 12 M
Is this ok [y/d/N]: y
Downloading packages:
(1/8): python36-chardet-3.0.4-1.el7.noarch.rpm | 190 kB 00:00:00
(2/8): httpie-1.0.3-1.el7.noarch.rpm | 103 kB 00:00:00
(3/8): python36-idna-2.10-1.el7.noarch.rpm | 99 kB 00:00:00
(4/8): python36-pysocks-1.6.8-7.el7.noarch.rpm | 30 kB 00:00:00
(5/8): python36-requests-2.14.2-2.el7.noarch.rpm | 112 kB 00:00:00
(6/8): python36-six-1.14.0-3.el7.noarch.rpm | 34 kB 00:00:00
(7/8): python36-urllib3-1.25.6-2.el7.noarch.rpm | 178 kB 00:00:00
(8/8): python36-pygments-2.4.2-1.el7.noarch.rpm | 1.5 MB 00:00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 4.2 MB/s | 2.2 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : python36-six-1.14.0-3.el7.noarch 1/8Installing : python36-pygments-2.4.2-1.el7.noarch 2/8Installing : python36-pysocks-1.6.8-7.el7.noarch 3/8Installing : python36-urllib3-1.25.6-2.el7.noarch 4/8Installing : python36-idna-2.10-1.el7.noarch 5/8Installing : python36-chardet-3.0.4-1.el7.noarch 6/8Installing : python36-requests-2.14.2-2.el7.noarch 7/8Installing : httpie-1.0.3-1.el7.noarch 8/8Verifying : python36-requests-2.14.2-2.el7.noarch 1/8Verifying : python36-chardet-3.0.4-1.el7.noarch 2/8Verifying : python36-idna-2.10-1.el7.noarch 3/8Verifying : httpie-1.0.3-1.el7.noarch 4/8Verifying : python36-pysocks-1.6.8-7.el7.noarch 5/8Verifying : python36-urllib3-1.25.6-2.el7.noarch 6/8Verifying : python36-pygments-2.4.2-1.el7.noarch 7/8Verifying : python36-six-1.14.0-3.el7.noarch 8/8Installed:httpie.noarch 0:1.0.3-1.el7Dependency Installed:python36-chardet.noarch 0:3.0.4-1.el7 python36-idna.noarch 0:2.10-1.el7 python36-pygments.noarch 0:2.4.2-1.el7 python36-pysocks.noarch 0:1.6.8-7.el7python36-requests.noarch 0:2.14.2-2.el7 python36-six.noarch 0:1.14.0-3.el7 python36-urllib3.noarch 0:1.25.6-2.el7Complete!
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
3、对于其他系统
可以使用 pip(Python 的包管理工具)进行安装,命令为 pip install --upgrade httpie。
四、语法和使用
1、命令
(1)语法如下
HTTPie 的使用非常简单,基本的命令格式为:
http [flags] [METHOD] URL [ITEM [ITEM]]
(2)帮助信息
在命令行输入如下命令:
http --help
实际操作如下:
2、发送 GET 请求
命令如下:
http httpbin.org/get
实际操作如下:
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# http httpbin.org/get
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 295
Content-Type: application/json
Date: Mon, 01 Jul 2024 13:38:48 GMT
Server: gunicorn/19.9.0{"args": {},"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Host": "httpbin.org","User-Agent": "HTTPie/1.0.3","X-Amzn-Trace-Id": "Root=1-6682b168-27ab71993d1c8f194a0470db"},"origin": "121.37.68.30","url": "http://httpbin.org/get"
}[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
3、发送 POST 请求并附带 JSON 数据
命令如下:
http POST httpbin.org/post name=John email='john@example.com'
4、发送带有自定义 headers 的请求
命令如下:
http PUT httpbin.org/put X-API-Token:123 name=John
5、从文件中上传内容
命令如下:
http example.org < file.json
6、查看请求信息
使用 -v 参数可以查看请求的详细信息,如 http -v example.org
五、其他功能
1、支持下载
使用 --download 参数可以将响应内容作为文件下载。
2、会话持久化
使用 --session 参数可以在多个请求之间保持会话状态。
3、自定义请求头
可以直接在命令中设置请求头,如 http localhost:8000 Host:example.com
六、示例
使用Linux命令httpie的示例可以按照不同的HTTP请求类型和用法进行分类。下面给出一些具体的示例,展示了httpie命令的多种用法,涵盖了不同的HTTP请求类型、请求头和请求体等方面。通过结合这些示例,可以根据自己的需求发送各种HTTP请求。
1. 发送GET请求
基本GET请求,命令如下:
http vidisit.cn/get
此命令将向vidisit.cn的/get端点发送一个GET请求,并返回响应。实际操作如下:
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# http vidisit.cn/get
HTTP/1.1 404 Not Found
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html
Date: Mon, 01 Jul 2024 13:41:00 GMT
Server: wts/1.19.9.1
Transfer-Encoding: chunked
X-Frame-Options: SAMEORIGIN<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Äã·ÃÎʵÄÒ³Ãæ²»´æÔÚ»ò±»É¾³ý£¡</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=refresh content=2;url=http://www.shareda.cn/>
<STYLE type=text/css>.font14 {FONT-SIZE: 14px
}
.font12 {FONT-SIZE: 12px
}
.font12 a{FONT-SIZE: 12px; color: #CC0000; text-decoration:none;
}
</STYLE><META content="MSHTML 6.00.2900.3354" name=GENERATOR></HEAD>
<BODY>
<TABLE height=500 cellSpacing=0 cellPadding=0 width=500 align=center
background=404/err.gif border=0><TBODY><TR><TD height=330></TD></TR><TR><TD vAlign=top><DIV class=font14 align=center><STRONG>Äã·ÃÎʵÄÒ³Ãæ<FONTcolor=#0099ff>²»´æÔÚ</FONT>»ò±»<FONT color=#ff0000>ɾ³ý£¡<BR></FONT></STRONG><SPANclass=font12><FONT color=#666666>ÈýÃëºó×Ô¶¯·µ»Ø<A href="http://www.shareda.cn"></A>Ê×Ò³........</FONT></SPAN></DIV></TD></TR></TBODY></TABLE></BODY></HTML>[root@ecs-52a1 home]#
2. 发送带有参数的GET请求
在URL中直接包含参数,命令如下:
http httpbin.org/get?param1=value1¶m2=value2
此命令将发送一个包含查询参数的GET请求。
3. 发送POST请求
(1)发送JSON格式的POST请求
发送JSON格式的POST请求,命令如下:
http POST httpbin.org/post name=John email='john@example.com'
此命令将发送一个包含JSON数据(在本例中为name和email字段)的POST请求。注意,HTTPie默认将键值对解释为JSON对象。
(2)显式指定Content-Type为application/json
显式指定Content-Type,命令如下:
http POST httpbin.org/post Content-Type:application/json name=John email='john@example.com'
虽然HTTPie默认将键值对解释为JSON,但你也可以显式指定Content-Type。
4. 发送自定义请求头
设置自定义请求头,命令如下:
http PUT httpbin.org/put X-API-Token:123 name=John
此命令向/put端点发送一个PUT请求,并包含一个名为X-API-Token的自定义请求头。
5. 发送表单数据
发送表单格式的POST请求,命令如下:
http -f POST httpbin.org/post username=linuxmi-user password=linuxmi-pwd
使用-f或--form选项,HTTPie将发送表单编码的请求体。
6. 上传文件
使用POST请求上传文件,命令如下:
http -f POST httpbin.org/post file@/path/to/file.txt
此命令将文件file.txt作为表单数据的一部分上传。
7. 查看请求的详细信息
使用-v或--verbose选项查看详细输出,命令如下:
http -v httpbin.org/get
-v选项将显示请求的详细信息,包括请求头和响应头。
实际操作如下:
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# http -v httpbin.org/get
GET /get HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: httpbin.org
User-Agent: HTTPie/1.0.3HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 295
Content-Type: application/json
Date: Mon, 01 Jul 2024 13:44:00 GMT
Server: gunicorn/19.9.0{"args": {},"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Host": "httpbin.org","User-Agent": "HTTPie/1.0.3","X-Amzn-Trace-Id": "Root=1-6682b2a0-3a05485606ae7b1f5a361705"},"origin": "121.37.68.30","url": "http://httpbin.org/get"
}[root@ecs-52a1 home]#
8. 认证
使用Basic Auth进行认证,命令如下:
http -a username:password httpbin.org/basic-auth/username/password
使用-a或--auth选项,后面跟上用户名和密码(用冒号分隔),可以进行Basic Auth认证。
七. 总结
HTTPie 是一个功能强大且易于使用的命令行 HTTP 客户端,它简化了 HTTP 请求的发送和调试过程,为开发人员和系统管理员提供了极大的便利。无论是测试、调试还是日常的网络交互,HTTPie 都是一个不可或缺的工具。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。