千家信息网

HTTPie如何使用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,今天小编给大家分享一下HTTPie如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下
千家信息网最后更新 2026年11月04日HTTPie如何使用

今天小编给大家分享一下HTTPie如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

HTTPie 是一个 HTTP 的命令行客户端,目标是让 CLI 和 web 服务之间的交互尽可能的人性化。这个工具提供了简洁的 http 命令,允许通过自然的语法发送任意 HTTP 请求数据,展示色彩化的输出。HTTPie 可用于与 HTTP 服务器做测试、调试和常规交互。

Wget 和 cURL 的替代品

你可能听说过古老的 Wget 或稍微新一些的 cURL 工具,它们允许你从命令行访问 Web。它们是为访问网站而编写的,而 HTTPie 则用于访问 Web API。

网站请求发生在计算机和正在阅读并响应它所看到的内容的最终用户之间,这并不太依赖于结构化的响应。但是,API 请求会在两台计算机之间进行结构化调用,人并不是该流程内的一部分,像 HTTPie 这样的命令行工具的参数可以有效地处理这个问题。

安装 HTTPie

有几种方法可以安装 HTTPie。你可以通过包管理器安装,无论你使用的是 brew、apt、yum 还是 dnf。但是,如果你已配置 virtualenvwrapper,那么你可以用自己的方式安装:

$ mkvirtualenv httpie...(httpie) $ pip install httpie...(httpie) $ deactivate$ alias http=~/.virtualenvs/httpie/bin/http$ http -b GET https://httpbin.org/get{   "args": {},   "headers": {       "Accept": "*/*",       "Accept-Encoding": "gzip, deflate",       "Host": "httpbin.org",       "User-Agent": "HTTPie/1.0.2"   },   "origin": "104.220.242.210, 104.220.242.210",   "url": "https://httpbin.org/get"}

通过将 http 别名指向为虚拟环境中的命令,即使虚拟环境在非活动状态,你也可以运行它。你可以将 alias 命令放在 .bash_profile 或 .bashrc 中,这样你就可以使用以下命令升级 HTTPie:

$ ~/.virtualenvs/httpie/bin/pip install -U pip

使用 HTTPie 查询网站

HTTPie 可以简化查询和测试 API。上面使用了一个选项,-b(即 –body)。没有它,HTTPie 将默认打印整个响应,包括响应头:

$ http GET https://httpbin.org/getHTTP/1.1 200 OKAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Connection: keep-aliveContent-Encoding: gzipContent-Length: 177Content-Type: application/jsonDate: Fri, 09 Aug 2019 20:19:47 GMTReferrer-Policy: no-referrer-when-downgradeServer: nginxX-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=block{   "args": {},   "headers": {       "Accept": "*/*",       "Accept-Encoding": "gzip, deflate",       "Host": "httpbin.org",       "User-Agent": "HTTPie/1.0.2"   },   "origin": "104.220.242.210, 104.220.242.210",   "url": "https://httpbin.org/get"}

这在调试 API 服务时非常重要,因为大量信息在响应头中发送。例如,查看发送的 cookie 通常很重要。httpbin.org 提供了通过 URL 路径设置 cookie(用于测试目的)的方式。以下设置一个标题为 opensource, 值为 awesome 的 cookie:

$ http GET https://httpbin.org/cookies/set/opensource/awesomeHTTP/1.1 302 FOUNDAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Connection: keep-aliveContent-Length: 223Content-Type: text/html; charset=utf-8Date: Fri, 09 Aug 2019 20:22:39 GMTLocation: /cookiesReferrer-Policy: no-referrer-when-downgradeServer: nginxSet-Cookie: opensource=awesome; Path=/X-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=block"-//W3C//DTD HTML 3.2 Final//EN">Redirecting...Redirecting...You should be redirected automatically to target URL:"/cookies">/cookies.  If not click the link.

注意 Set-Cookie: opensource=awesome; Path=/ 的响应头。这表明你预期设置的 cookie 已正确设置,路径为 /。另请注意,即使你得到了 302 重定向,http 也不会遵循它。如果你想要遵循重定向,则需要明确使用 –follow 标志请求:

$ http --follow GET https://httpbin.org/cookies/set/opensource/awesomeHTTP/1.1 200 OKAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Connection: keep-aliveContent-Encoding: gzipContent-Length: 66Content-Type: application/jsonDate: Sat, 10 Aug 2019 01:33:34 GMTReferrer-Policy: no-referrer-when-downgradeServer: nginxX-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=block{   "cookies": {       "opensource": "awesome"   }}

但此时你无法看到原来的 Set-Cookie 头。为了看到中间响应,你需要使用 –all:

$ http --headers --all --follow GET https://httpbin.org/cookies/set/opensource/awesomeHTTP/1.1 302 FOUNDAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Content-Type: text/html; charset=utf-8Date: Sat, 10 Aug 2019 01:38:40 GMTLocation: /cookiesReferrer-Policy: no-referrer-when-downgradeServer: nginxSet-Cookie: opensource=awesome; Path=/X-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockContent-Length: 223Connection: keep-aliveHTTP/1.1 200 OKAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Content-Encoding: gzipContent-Type: application/jsonDate: Sat, 10 Aug 2019 01:38:41 GMTReferrer-Policy: no-referrer-when-downgradeServer: nginxX-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockContent-Length: 66Connection: keep-alive

打印响应体并不有趣,因为你大多数时候只关心 cookie。如果你想看到中间请求的响应头,而不是最终请求中的响应体,你可以使用:

$ http --print hb --history-print h --all --follow GET https://httpbin.org/cookies/set/opensource/awesomeHTTP/1.1 302 FOUNDAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Content-Type: text/html; charset=utf-8Date: Sat, 10 Aug 2019 01:40:56 GMTLocation: /cookiesReferrer-Policy: no-referrer-when-downgradeServer: nginxSet-Cookie: opensource=awesome; Path=/X-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockContent-Length: 223Connection: keep-aliveHTTP/1.1 200 OKAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Content-Encoding: gzipContent-Type: application/jsonDate: Sat, 10 Aug 2019 01:40:56 GMTReferrer-Policy: no-referrer-when-downgradeServer: nginxX-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockContent-Length: 66Connection: keep-alive{ "cookies": {   "opensource": "awesome" }}

你可以使用 –print 精确控制打印的内容(h:响应头;b:响应体),并使用 –history-print 覆盖中间请求的打印内容设置。

使用 HTTPie 下载二进制文件

有时响应体并不是文本形式,它需要发送到可被不同应用打开的文件:

$ http GET https://httpbin.org/image/jpegHTTP/1.1 200 OKAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Connection: keep-aliveContent-Length: 35588Content-Type: image/jpegDate: Fri, 09 Aug 2019 20:25:49 GMTReferrer-Policy: no-referrer-when-downgradeServer: nginxX-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=block+-----------------------------------------+| NOTE: binary data not shown in terminal |+-----------------------------------------+

要得到正确的图片,你需要保存到文件:

$ http --download GET https://httpbin.org/image/jpegHTTP/1.1 200 OKAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Connection: keep-aliveContent-Length: 35588Content-Type: image/jpegDate: Fri, 09 Aug 2019 20:28:13 GMTReferrer-Policy: no-referrer-when-downgradeServer: nginxX-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockDownloading 34.75 kB to "jpeg.jpe"Done. 34.75 kB in 0.00068s (50.05 MB/s)

试一下!图片很可爱。

使用 HTTPie 发送自定义请求

你可以发送指定的请求头。这对于需要非标准头的自定义 Web API 很有用:

$ http GET https://httpbin.org/headers X-Open-Source-Com:Awesome{ "headers": {   "Accept": "*/*",   "Accept-Encoding": "gzip, deflate",   "Host": "httpbin.org",   "User-Agent": "HTTPie/1.0.2",   "X-Open-Source-Com": "Awesome" }}

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

$ http --body PUT https://httpbin.org/anything open-source=awesome author=moshez{ "args": {}, "data": "{\"open-source\": \"awesome\", \"author\": \"moshez\"}", "files": {}, "form": {}, "headers": {   "Accept": "application/json, */*",   "Accept-Encoding": "gzip, deflate",   "Content-Length": "46",   "Content-Type": "application/json",   "Host": "httpbin.org",   "User-Agent": "HTTPie/1.0.2" }, "json": {   "author": "moshez",   "open-source": "awesome" }, "method": "PUT", "origin": "73.162.254.113, 73.162.254.113", "url": "https://httpbin.org/anything"}

下次在调试 Web API 时,无论是你自己的还是别人的,记得放下 cURL,试试 HTTPie 这个命令行工具。

以上就是"HTTPie如何使用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

命令 内容 工具 知识 篇文章 之间 文件 方式 网站 服务 测试 不同 重要 图片 环境 结构 计算机 路径 还是 查询 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 互联网科技活动banner A股互联网金融科技公司 金诺互联网科技 上海致骋互联网科技 广西互联网科技公司 居家互联网科技有限公司 哈尔滨秒房互联网科技有限公司 西藏七维空间互联网科技有限公司 小米互联网科技园设置 全球顶尖互联网科技公司 互联网公司科技股 武汉健翔互联网络科技有限公司 链环科技传统企业怎么转型互联网 乌鲁木齐新华智原互联网科技学校 翼展科技 首家互联网医院 上海乐五互联网科技有限公司 互联网科技接地气 版纳互联网科技选哪家 中国科技和美国互联网 互联网佳科技有限公司 北京互联网科技 高科技与互联网 科技互联网创业计划书 字节跳动和互联网科技 乌苏新华互联网科技做什么的 工业互联网展湾科技股份有限公司 容联科技互联网电商 上海旺乐尼互联网科技有限公司 互联网科技创新方面的资料
0