HTTPie,一种人性化的cURL类工具

cURL是用于发出HTTP请求的常用命令行工具。 在本教程中,我们将介绍HTTPie ,这是一种以人类友好的方式发出HTTP请求的命令行工具。 HTTPie使用具有简单自然语法的命令,并以可显示的方式显示输出。

官方文档

HTTPie(发音为aitch-tee-tee-pie )是命令行HTTP客户端。 其目标是使CLI与Web服务的交互尽可能对人类友好。 它提供了一个简单的http命令,该命令允许使用简单自然的语法发送任意HTTP请求,并显示彩色输出。 HTTPie可用于测试,调试和通常与HTTP服务器交互。

入门

为了在Ubuntu机器上开始使用HTTPie,您需要使用apt-get安装软件包。

sudo apt-get install httpie

安装完成后,您的系统上应该已安装HTTPie。 尝试使用HTTPie向任何网站发出GET请求:

http www.tutsplus.com

上面的查询给出以下响应:

HTTP响应

看起来好像已安装HTTPie并在系统上正常工作。 如果仔细观察,上述命令的彩色输出显示该URL已永久移动到https://tutsplus.com 。 因此,要对tutsplus进行GET请求查询,请修改查询:

http https://tutsplus.com

上面的查询将在URL https://tutsplus.com上返回GET请求HTML输出。

从上面的查询可以看出, HTTPie执行请求所需的唯一信息是URL。

使用HTTPie执行基本请求

在深入研究HTTPie命令之前,我们将看一下如何使用HTTPie执行基本请求。 我们将使用json-server来启动并运行虚拟服务器以发出请求。 要开始使用json-server,请使用npm安装服务器。

npm install -g json-server

创建一个名为index.js的文件,该文件将为我们的虚拟服务器创建一些随机数据。

// index.js
module.exports = function() {
  var data = { users: [] }
  // Create 5 users
  for (var i = 0; i < 5; i++) {
    data.users.push({ id: i, name: 'user' + i })
  }
  return data
}

使用index.js文件运行json服务器。

json-server index.js

现在服务器应该已经启动并在http:// localhost:3000 /运行

使用HTTPie获取请求

默认情况下,如果将URL分配给HTTPie,它将假定请求类型为GET并相应执行。 这是一个GET请求的示例:

http http://localhost:3000/users

上面的请求显示以下输出:

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 212
Content-Type: application/json; charset=utf-8
Date: Tue, 18 Oct 2016 03:40:15 GMT
ETag: W/"d4-4+4+bS4GA0+D/tDXlF8voQ"
Expires: -1
Pragma: no-cache
Vary: Origin, Accept-Encoding
X-Content-Type-Options: nosniff
X-Powered-By: Express

[
    {
        "id": 0, 
        "name": "user0"
    }, 
    {
        "id": 1, 
        "name": "user1"
    }, 
    {
        "id": 2, 
        "name": "user2"
    }, 
    {
        "id": 3, 
        "name": "user3"
    }, 
    {
        "id": 4, 
        "name": "user4"
    }
]

使用HTTPie的POST请求

要使用HTTPie执行POST请求,我们需要添加POST关键字以及要发布到URL的数据。 这是一个例子:

http POST http://localhost:3000/users id=007 name=RoyAgasthyan

该命令将在终端屏幕上显示以下输出:

HTTP/1.1 201 Created
Access-Control-Allow-Credentials: true
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 43
Content-Type: application/json; charset=utf-8
Date: Tue, 18 Oct 2016 03:46:22 GMT
ETag: W/"2b-mpj//lkYJiGiWBB42OLoKA"
Expires: -1
Pragma: no-cache
Vary: Origin, X-HTTP-Method-Override, Accept-Encoding
X-Content-Type-Options: nosniff
X-Powered-By: Express

{
    "id": "007", 
    "name": "RoyAgasthyan"
}

尝试使用HTTPie进行GET请求,您应该在响应中看到新发布的数据。

使用HTTPie提交表单

提交表单是用户通常执行的另一个请求。 使用HTTPie,通过指定如下所示的form选项,通过URL提交表单变得相当容易。

http --form POST www.yourformposturl.com name='Roy'

执行以上命令后, Content-Type会自动设置为application/x-www-form-urlencoded; charset=utf-8 application/x-www-form-urlencoded; charset=utf-8 ,因此您不需要显式设置它。

处理HTTP重定向

就像您在前面的示例中可能已经注意到的那样,默认情况下HTTPie不处理HTTP重定向。 当我们尝试在www.tutsplus.com上执行GET请求时,它显示一条消息,指出URL已被移动。 如果希望HTTPie处理重定向,则需要在request命令中添加一个名为follow的选项。

http --follow www.tutsplus.com

上面的HTTPie查询将处理HTTP重定向(如果有)。

使用HTTPie下载文件

HTTPie提供了从服务器下载文件的功能,类似于wget命令。 为了下载文件,您需要指定download选项以及URL。

http --download http://www.tutorialspoint.com/python/python_tutorial.pdf

上面的命令将显示响应,如下所示:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Content-Length: 3945951
Content-Type: application/pdf
Date: Tue, 18 Oct 2016 04:01:43 GMT
Etag: "3c35df-52fe21b892a6f"
Last-Modified: Thu, 07 Apr 2016 09:57:34 GMT
Server: ECS (pnq/AF9A)
X-Cache: HIT

Downloading 3.76 MB to "python_tutorial.pdf-1"
 |  28.03 %    1.05 MB   63.85 kB/s  0:00:43 ETA

处理身份验证

访问Web服务URL将需要某种或其他种类的身份验证。 HTTPie支持大多数常用的身份验证机制。 默认情况下,HTTPie支持基本身份验证,因此您只需要使用-a选项将用户名和密码传递给请求。

http -a username:password www.mywebservice.com

要使用摘要式身份验证,您需要使用-A选项传递身份验证机制名称。

http -A digest -a username:password www.myservice.com

自定义响应显示

当我们请求URL时,所有数据以及标头信息都会显示在终端中。 HTTPie提供了一个用于定制输出响应的选项。 您可以通过指定--header--body选项以及请求来打印各个标题和正文信息。

http https://www.tutsplus.com --header

上面的命令将显示标题信息,如下所示:

HTTP/1.1 301 Moved Permanently
CF-RAY: 2f6669f88fc43548-LHR
Connection: keep-alive
Date: Sun, 23 Oct 2016 16:02:32 GMT
Location: https://tutsplus.com/
Server: cloudflare-nginx
Set-Cookie: __cfduid=dfea480f2567e7c463e66999adfdc73d71477238552; expires=Mon, 23-Oct-17 16:02:32 GMT; path=/; domain=.tutsplus.com; HttpOnly
Transfer-Encoding: chunked

现在,如果您尝试将HTTP请求和--body选项一起使用,则它仅应打印正文部分。

http www.google.com --body

上面的命令将输出以下输出:

<HTML>

<HEAD>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>302 Moved</TITLE>
</HEAD>

<BODY>
    <H1>302 Moved</H1>
    The document has moved
    <A HREF="http://www.google.co.in/?gfe_rd=cr&amp;ei=OBwQWPO7Juyq8wf13bzYBw">here</A>.
</BODY>

</HTML>

维护会议

使用HTTPie时,每个请求都独立于其他请求。 如果我们想为其他HTTP请求保留会话,我们可以保留会话。 为了维持会话,我们需要做的就是创建一个命名会话,如下所示:

http --session=roy -a roy:mypass www.myservice.com

上面的命令将创建一个名为roy的会话,该会话可以通过使用会话名称来用于其他请求。 这是使用会话roy的示例:

http --session=roy www.myservice.com

使用HTTP提示自动完成

可能很难记住所有与HTTPie相关的命令。 http-prompt工具包提供了可与HTTPie一起使用的自动完成功能。 要开始使用http-prompt ,请使用pip安装它:

sudo pip install http-prompt

要开始会话,请使用将要查询的服务器URL调用http-prompt 。 重新启动我们安装的json-server并调用http-prompt ,如下所示:

http-prompt http://localhost:3000/users

输入一些HTTP字母,自动完成应显示出来。

自动完成演示

输入httpie ,它应该显示我们正在查询的URL。

http http://localhost:3000/users

所有HTTPie request命令都应在http-prompt 。 尝试输入GET,它将自动弹出。 输入GET命令后,将显示以下响应。

GET命令的响应

包起来

在本教程中,我们了解了如何开始使用HTTPie (一种更人性化的cURL替代方法)。 我们看到了如何使用HTTPie和其他一些功能来执行诸如GET和POST之类的基本请求操作。 有关使用HTTPie的详细信息,请查看官方文档 。 另请查看http-prompt官方文档 。 请在下面的评论中告诉我们您的想法。

翻译自: https://code.tutsplus.com/tutorials/httpie-a-human-friendly-curl-like-tool--cms-27310

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值