专栏首页Opensource翻译专栏API测试--HTTPie入门【Linux-Command line】

API测试--HTTPie入门【Linux-Command line】

使用HTTPie(一种使用Python编写的易于使用的命令行工具)调试API客户端。

图片来源:Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0

HTTPie是易于使用且易于升级的HTTP客户端。 发音为“ aitch-tee-tee-pie”并以http身份运行,它是用Python编写的用于访问网络的命令行工具。

由于此操作方法是关于HTTP客户端的,因此需要使用HTTP服务器来进行尝试。 在这种情况下,它是httpbin.org,这是一个简单的开放源代码HTTP请求和响应服务。 httpbin.org网站是测试Web API客户端以及仔细管理和显示请求和响应中的详细信息的强大方法,但是现在我们将重点介绍HTTPie的功能。

Wget和cURL的替代方法

你可能听说过古老的Wget或较新的cURL工具,这些工具可让你从命令行访问Web。 它们被编写用于访问网站,而HTTPie用于访问Web APIs

网站请求被设计为介于计算机和正在阅读并对其所见内容做出响应的最终用户之间。 这并不太取决于结构化的响应。 但是,API请求在两台计算机之间进行结构化调用。 人不是图片的一部分,HTTPie这样的命令行工具的参数可以有效地处理此问题。

安装HTTPie

有几种安装HTTPie的方法。 无论使用brew,apt,yum还是dnf,你都可以将其作为软件包管理器的软件包获得。 但是,如果配置了virtualenvwrapper,则可以自己安装:

在虚拟环境内部直接为该命令添加http别名,即使虚拟环境未处于活动状态,你也可以运行它。 可以将alias命令放在.bash_profile或.bashrc中,以便使用以下命令升级HTTPie:

使用HTTPie查询网站

HTTPie可以简化查询和测试API。 上面使用了运行它的一个选项“-b”(也称为“--body”)。 如果没有它,HTTPie将默认打印整个响应,包括标题:

这在调试API服务时至关重要,因为在headers中发送了大量信息。 例如,查看发送哪些cookie通常很重要。 Httpbin.org提供了用于通过URL路径设置cookie(出于测试目的)的选项。 下面将一个名为“opensource”的cookie设置为awesome值:

注意“Set-Cookie:opensource = awesome; 路径= /”header。 这表明您期望设置的cookie已正确设置,并带有“/”路径。 另请注意,即使你获得了302重定向,http也没有遵循它。 如果要遵循重定向,则需要使用“--follow”标志明确要求它:

但是现在你看不到原始的Set-Cookie header。 为了查看中间答复,需要使用“--all”:

打印body有些无趣,因为你对Cookie最感兴趣。 如果要查看中间请求的header,但body来自最终请求,请执行以下操作:

你可以使用“--print”精确控制要打印的内容,并使用“--history-print”覆盖用于中间请求的内容。

使用HTTPie下载二进制文件

有时,主体是非文本的,需要将其发送到可以由其他应用程序打开的文件中:

为了获得正确的图像,需要将其保存到文件中:

试试吧! 图片是很可爱的。

使用HTTPie发送自定义请求

你还可以发送特定的标题。 这对于需要非标准header的自定义Web API很有用:

最后,如果要发送JSON字段(尽管可以指定确切的内容),对于许多嵌套较少的输入,可以使用快捷方式:

下次调试Web API(无论是你自己的还是其他人的Web API)时,请放下cURL并访问HTTPie(Web API的命令行客户端)。

原文链接:https://opensource.com/article/19/8/getting-started-httpie

原文作者:Moshe Zadka(Community Moderator)

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 7个实用的Bash历史快捷方式【Linux-Command line】

    大多数Bash历史快捷方式指南都详尽列出了每个可用的条目。 这样做的问题是,我只使用一次快捷方式,当我尝试所有可能性时,我变得目光呆滞。 然后,我将投入工作并完...

    QRosie
  • 显示硬件信息的Linux命令【Linux-Command line】

    可能有很多原因导致你需要查找有关计算机硬件的详细信息。 例如,如果需要帮助修复某些问题并在在线论坛上发布请求,人们会立即询问你有关计算机的详细信息。 再者,如果...

    QRosie
  • 9个基本的GNU binutils 工具【Linux-Command-line】

    想象一下,尽管无法访问软件的源代码,但仍然能够理解软件的实现方式,在其中找到漏洞,并且(更好的是)修复了错误。 凡此种种都源于二进制形式。 听起来像是拥有超能力...

    QRosie
  • “协力抗疫,码力 全开”线上黑客马拉松+29号健健康康小队+学生返校疫情排查

    ①学生需求-疫情期间确保自身生命安全:确保返校途中自身安全、返校后生活和学习如何展开

    健健康康小队
  • IBatisNet之获取和操作SQL语句

    IBatisNet和其他的ORMapping的工具相比较,可以说是一个sqlmap,所以在Why use iBATIS SQL Maps? 中有一条理由是 Y...

    张善友
  • Python和Scala的类和对象(一)

    前面的文章我们更多的是关注于函数,现在开始进入面向对象的世界了。函数是一种对过程的抽象,它提供了单一的入口和出口,封装了一系列的逻辑处理,而类和对象更像是对物体...

    哒呵呵
  • Tensorflow Lite之图片识别研究

    有关TensorFlow的介绍建议看官网,如果懒的话可以直接看我上篇文章。官方告诉我们,入门TensorFlow lite的最好姿势是学习他的demo,这里从第...

    brzhang
  • MyBatis魔法堂:各数据库的批量Update操作

    一、前言                                     MyBatis的update元素的用法与insert元素基本相同,因此本篇不打...

    ^_^肥仔John
  • 科技神评论:贾跃亭在发布会上开的车,还不如马斯克已经做出来的

    即日起,腾讯科技“科技神评论”,精选每日用户热评,为你分享用户眼中最真实的科技。 1.《贾跃亭美国造车全调查,名下已几无资产》 据钛媒体报道,目前贾跃亭在美国的...

    企鹅号小编
  • 科技神评论:贾跃亭在发布会上开的车,还不如马斯克已经做出来的

    即日起,腾讯科技“科技神评论”,精选每日用户热评,为你分享用户眼中最真实的科技。 1.《贾跃亭美国造车全调查,名下已几无资产》 据钛媒体报道,目前贾跃亭在美国的...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券