httpie-Linux上的Curl替代HTTP命令行客户端

时间:2020-03-05 15:27:41  来源:igfitidea点击:

在本教程中,将介绍httpie,它是现代命令行HTTP客户端,也是curl的替代工具。
httpie是Jakub Roztocil的GitHub项目,已从Github上受益。

httpie工具被视为现代的命令行http客户端,它与Web服务进行CLI交互,并提供http命令,该命令允许使用简单自然的语法发送任意HTTP请求,并显示彩色输出。

它提供了一些功能,例如内置JSON,HTTPS,语法着色,代理,身份验证,持久性会话,对Python(2.6、2.7和3.x)的良好支持以及我们可以发现的其他功能。

1)安装httpie

默认情况下,httpie存在于Linux系统信息库中,可以通过软件包直接安装

# yum install httpie
Loaded plugins: fastestmirror
base                                                                                                                           | 3.6 kB  00:00:00     
epel/x86_64/metalink                                                                                                           |  13 kB  00:00:00     
epel                                                                                                                           | 4.3 kB  00:00:00     
Dependencies Resolved
======================================================================================================================================================
 Package                               Arch                         Version                                          Repository                  Size
======================================================================================================================================================
Installing:
 python2-httpie                        noarch                       0.9.4-1.el7                                      epel                       100 k
Installing for dependencies:
 jbigkit-libs                          x86_64                       2.0-11.el7                                       base                        46 k
 libtiff                               x86_64                       4.0.3-27.el7_3                                   base                       170 k
 libwebp                               x86_64                       0.3.0-7.el7                                      base                       170 k
 python-chardet                        noarch                       2.2.1-1.el7_1                                    base                       227 k
Installed:
  python2-httpie.noarch 0:0.9.4-1.el7                                                                                                                 
Dependency Installed:
  jbigkit-libs.x86_64 0:2.0-11.el7               libtiff.x86_64 0:4.0.3-27.el7_3                        libwebp.x86_64 0:0.3.0-7.el7                
  python-chardet.noarch 0:2.2.1-1.el7_1          python-pillow.x86_64 0:2.0.0-19.gitd1c6db8.el7         python-pygments.noarch 0:1.4-10.el7         
  python-requests.noarch 0:2.6.0-1.el7_1         python-six.noarch 0:1.9.0-2.el7                        python-urllib3.noarch 0:1.10.2-3.el7        
Complete!

2)如何使用httpie

现在我们已经安装了httpie,我们必须保留以下语法。

http [flags] [METHOD] URL [ITEM [ITEM]]

我们可以通过help命令看到如何使用它

# http --help
usage: http [--json] [--form] [--pretty {all,colors,format,none}]
            [--style STYLE] [--print WHAT] [--headers] [--body] [--verbose]
            [--all] [--history-print WHAT] [--stream] [--output FILE]
            [--download] [--continue]
            [--session SESSION_NAME_OR_PATH | --session-read-only SESSION_NAME_OR_PATH]
            [--auth USER[:PASS]] [--auth-type {basic,digest}]
            [--proxy PROTOCOL:PROXY_URL] [--follow]
            [--max-redirects MAX_REDIRECTS] [--timeout SECONDS]
            [--check-status] [--verify VERIFY]
            [--ssl {ssl2.3,ssl3,tls1,tls1.1,tls1.2}] [--cert CERT]
            [--cert-key CERT_KEY] [--ignore-stdin] [--help] [--version]
            [--traceback] [--debug]
            [METHOD] URL [REQUEST_ITEM [REQUEST_ITEM ...]]
HTTPie - a CLI, cURL-like tool for humans. <http://httpie.org>
METHOD
      The HTTP method to be used for the request (GET, POST, PUT, DELETE, ...).
      
      This argument can be omitted in which case HTTPie will use POST if there
      is some data to be sent, otherwise GET:
      
          $http example.org               # => GET
          $http example.org hello=world   # => POST

必需的参数是URL,以便使用命令。
例如,我们可以使用httpie直接通过终端在上发布注释,如下所示:

# http -a USERNAME POST https://api.github.com/repos/jakubroztocil/httpie/issues/83/comments body='HTTPie is awesome! :heart:'

我们可以直接在项目的github问题发布页面上检查结果

a)请求网址

httpie的基本用法是请求URL。

# http google.com

b)下载文件

我们可以使用htppie的'--download'参数下载文件。
它用作wget命令

# http --download https://blog.theitroad.com/wp-content/uploads/2016/09/kubernetes-monitoring.jpg

在此过程中,可以使用-o参数直接重命名下载的文件,如下所示:

# http --download https://blog.theitroad.com/wp-content/uploads/2016/09/kubernetes-monitoring.jpg -o kubernetes.jpg

使用“ -o”参数时,可以使用“ -c”参数继续下载

c)验证URL

httpie通过两种方法支持身份验证:基本身份验证和摘要身份验证。
我们可以在此过程中直接在终端上插入密码,但也可以选择在过程中提示输入密码。
对于提示输入密码的基本身份验证,请执行以下操作:

# http -a alainfrancois theitroad.com
http: password for [email protected]:

或者,我们可以直接使用密码,如下所示:

# http -a alainfrancois:password theitroad.com

可以将一些其他身份验证机制安装为插件,例如AWS/Amazon S3(httpie-aws-auth)或者JWTAuth(httpie-jwt-auth)。

d)创建一个会话

httpie具有支持持久会话的特殊性。
我们可以创建命名会话,匿名会话和只读会话。

我们可以为每个主机创建一个或者多个命名会话,如下所示:

# http --session=user1 -a user1:password example.org X-Foo:Bar

e)发送请求

我们可以将带有请求项的请求添加到请求中的一件事是GET参数,如下所示:

# http https://httpbin.org/get foo==bar wicked==witch

httpie是一个很棒的工具,可以完成curl的工作。