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

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


看起来好像已安装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 usersfor (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: HITDownloading 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命令后,将显示以下响应。


包起来

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

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

HTTPie,一种人性化的cURL类工具相关推荐

  1. 软件测试类工具大全2009版(一)

    软件测试类工具大全第一部分,现列举如下,并非百分百全面,仅供测试同行参考: 功能自动化测试工具 厂商 工具名称 * Mercury Winrunner 备注:世界上最古老.经典的测试工具厂商Mercu ...

  2. httpstat:一个检查网站性能的 curl 统计分析工具

    httpstat:一个检查网站性能的 curl 统计分析工具 httpstat 是一个 Python 脚本,它以美妙妥善的方式反映了 curl 统计分析,它是一个单一脚本,兼容 Python 3 ,在 ...

  3. linux http 分析工具,技术|httpstat:一个检查网站性能的 curl 统计分析工具

    httpstat 是一个 Python 脚本,它以美妙妥善的方式反映了 curl 统计分析,它是一个单一脚本,兼容 Python 3 ,在用户的系统上不需要安装额外的软件(依赖). 从本质上来说它是一 ...

  4. 学习前端开发,可提高Web开发效率的15类工具

    Web的发展日新月异,这也使得Web开发者不得不加快脚步,学习新的技术和编程语言.尤其是对于那些大量流量入口的网站来说,跟上技术发展趋势更是尤为重要.为了使得Web开发人员能够更加专注于业务层面的开发 ...

  5. Java集成ElasticSearch及配置类工具类整理

    Java集成ElasticSearch及配置类工具类整理 前言:做一个有梦想的程序猿! ES不同的版本API差异比较大,此处ES版本为:6.5.3 代码如下: 添加Maven依赖 <!-- ES ...

  6. 国内外主流静态分析类工具汇总

    笔者从事该软件安全方面工作,在工作和学习中收集了国内外比较主流的静态分析类工具,供大家参考.大多是资料来自于网络整理,如有不足或欠缺,还请在评论中指出.我进行修正.也欢迎同行多多交流. 我使用0标注北 ...

  7. Java调试--排查类工具

    原文网址:Java调试--排查类工具_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java调试相关的命令. jps 简介 查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体 ...

  8. 8种网页数据的采集工具

    10种AI训练数据采集工具排行榜 8种网页数据的采集工具 1.目前常用的8种数据网站 2.如何写Python爬虫: 3.人生第一个 爬虫代码示例: 另外: 8种网页数据的采集工具 如何收集网页数据,来 ...

  9. 软件测试类工具大全2009版

    功能自动化测试工具      厂商   工具名称 Mercury Winrunner 备注:世界上最古老.经典的测试工具厂商Mercury Interactive公司(2004年改名Mercury)的 ...

最新文章

  1. SAP QM 稳定性研究功能研习系列1 - 稳定性研究总流程
  2. 谈谈java的bio、nio、aio模型
  3. linux比较两个文件命令cmp,Linux系统中使用cmp和comm命令来比较两个文件
  4. iOS关于代理的理解
  5. Vsftp的PASV模式和Port模式及VsFTP配置方案
  6. DOS的一个小工具 LOIC
  7. STM32跑html协议,STM32移植SBUS协议
  8. 黑马Java笔记第一讲—java基础
  9. 将bilibili缓存的m4s音视频文件合并(基于ffmpeg/含xml弹幕转ass/附exe程序)
  10. 彻底退出,刘强东转让所持京东股份;华为前三季研发费用超 1100 亿;腾讯会议部分功能开始收费 | EA周报...
  11. Android Weekly #33 :这个世界的问题,在于聪明人充满疑惑,而傻子们坚信不疑
  12. 随手写了一个鸡肋的二叉树
  13. 分布式事务中的时间戳详解
  14. 通过app打包修改app名称
  15. 【RDMA】19. RDMA之iWARP Soft-iWARP
  16. Android整合网上资源以及个人对GreenDao数据库框架的理解与使用(android-studio开发)
  17. dock接口_回看手机接口发展史:TypeC将实现大一统?
  18. go http post请求
  19. 工控触摸屏IC读卡一体机
  20. 远程桌面由于以下原因之一无法连接到远程计算机

热门文章

  1. 产品思考 - 移动全国网亲情功能的深度思考
  2. 催收评分卡是如何搭建的?
  3. JavaScript 沙箱模式
  4. Android 中通过Canvas 与线程结合实现动画效果
  5. VSCode自动补全插件 path autocomplete
  6. 创建Vue项目以及使用
  7. socketio跨域问题解决
  8. 【量化交易】 成长指路 【0010】
  9. 外星人在中国买苹果的故事
  10. Nginx 代理PHP