在Linux下HTTPie工具的使用教程

如果你經(jīng)常需要通過終端以非交互模式訪問網(wǎng)絡(luò)服務(wù)器(例如,從網(wǎng)絡(luò)上下載文件,或者是測(cè)試 RESTful 網(wǎng)絡(luò)服務(wù)接口),可能你會(huì)選擇的工具是 wget 或 curl。通過大量的命令行選項(xiàng),這兩種工具都可以處理很多非交互網(wǎng)絡(luò)訪問的情況(比如這里、這里,還有這里)。然而,即使像這些一樣的強(qiáng)大的工具,你也只能發(fā)揮你所了解的那些選項(xiàng)的功能。除非你很精通那些繁冗的語(yǔ)法細(xì)節(jié),這些工具對(duì)于你來說只不過是簡(jiǎn)單的網(wǎng)絡(luò)下載器而已。
就像其宣傳的那樣,“給人用 curl 類工具”,HTTPie 設(shè)計(jì)用來增強(qiáng) wget 和 curl 的可用性。它的主要目標(biāo)是使通過命令行與網(wǎng)絡(luò)服務(wù)器進(jìn)行交互的過程變得盡可能的人性化。為此,HTTPie 支持具有表現(xiàn)力、但又很簡(jiǎn)單很直觀的語(yǔ)法。它以彩色模式顯示響應(yīng),并且還有一些不錯(cuò)的優(yōu)點(diǎn),比如對(duì) JSON 的良好支持,和持久性會(huì)話用以作業(yè)流程化。
我知道很多人對(duì)把像 wget 和 curl 這樣的無(wú)處不在的、可用的、完美的工具換成完全沒聽說過的軟件心存疑慮。這種觀點(diǎn)是好的,特別是如果你是一個(gè)系統(tǒng)管理員、要處理很多不同的硬件的話。然而,對(duì)于開發(fā)者和終端用戶來說,重要的是效率。如果我發(fā)現(xiàn)了一個(gè)工具的用戶更佳替代品,那么我認(rèn)為采用易于使用的版本來節(jié)省寶貴的時(shí)間是毫無(wú)疑問的。沒有必要對(duì)替換掉的工具保持信仰忠誠(chéng)。畢竟,對(duì)于 Linux 來說,最好的事情就是可以選擇。
在這篇文章中,讓我們來了解并展示一下我所說的 HTTPie,一個(gè)用戶友好的 wget 和 curl 的替代。
在 Linux 上安裝 HTTPie
HTTPie 是用 Python 寫的,所以你可以在幾乎所有地方(Linux,MacOSX,Windows)安裝它。而且,在大多數(shù)的 Linux 發(fā)行版中都有編譯好的安裝包。
Debian,Ubuntu 或者 Linux Mint:
Fedora:
CentOS/RHEL:
首先,啟用EPEL 倉(cāng)庫(kù),然后運(yùn)行:
對(duì)于任何 Linux 發(fā)行版,另一個(gè)安裝方法時(shí)使用pip。
HTTPie 的例子
當(dāng)你安裝完 HTTPie 后,你可以通過輸入 http 命令來調(diào)用它。在這篇文章的剩余部分,我會(huì)展示幾個(gè)有用的 http 命令的例子。
例1:定制頭部
你可以使用 <header:value> 的格式來定制頭部。例如,我們發(fā)送一個(gè) HTTP GET 請(qǐng)求到 www.test.com ,使用定制用戶代理(user-agent)和來源(referer),還有定制頭部(比如 MyParam)。
注意到當(dāng)使用 HTTP GET 方法時(shí),就無(wú)需明確指定 HTTP 方法。
這個(gè) HTTP 請(qǐng)求看起來如下:
Host: www.dbjr.com.cn</p> <p> Accept: */*
Referer: http://xmodulo.com
Accept-Encoding: gzip, deflate, compress
MyParam: Foo
User-Agent: Xmodulo/1.0
例2:下載文件
你可以把 http 作為文件下載器來使用。你需要像下面一樣把輸出重定向到文件。
或者:
例3:定制 HTTP 方法
除了默認(rèn)的 GET 方法,你還可以使用其他方法(比如 PUT,POST,HEAD)。例如,發(fā)送一個(gè) HTTP PUT 請(qǐng)求:
例4:提交表單
使用 http 命令提交表單很容易,如下:
'-f' 選項(xiàng)使 http 命令序列化數(shù)據(jù)字段,并將 'Content-Type' 設(shè)置為 "application/x-www-form-urlencoded; charset=utf-8"。
這個(gè) HTTP POST 請(qǐng)求看起來如下:
Host: www.dbjr.com.cn</p> <p> Content-Length: 31
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Accept-Encoding: gzip, deflate, compress
Accept: */*
User-Agent: HTTPie/0.8.0
name=Dan+Nanni&comment=Hi+there
例5:JSON 支持
HTTPie 內(nèi)置 JSON(一種日漸普及的數(shù)據(jù)交換格式)支持。事實(shí)上,HTTPie 默認(rèn)使用的內(nèi)容類型(content-type)就是 JSON。因此,當(dāng)你不指定內(nèi)容類型發(fā)送數(shù)據(jù)字段時(shí),它們會(huì)自動(dòng)序列化為 JSON 對(duì)象。
這個(gè) HTTP POST 請(qǐng)求看起來如下:
Host: www.dbjr.com.cn</p> <p> Content-Length: 44
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate, compress
Accept: application/json
User-Agent: HTTPie/0.8.0
{"name": "Dan Nanni", "comment": "Hi there"}
例6:輸出重定向
HTTPie 的另外一個(gè)用戶友好特性是輸入重定向,你可以使用緩沖數(shù)據(jù)提供 HTTP 請(qǐng)求內(nèi)容。例如:
或者:
結(jié)束語(yǔ)
在這篇文章中,我介紹了 HTTPie,一個(gè) wget 和 curl 的可能替代工具。除了這里展示的幾個(gè)簡(jiǎn)單的例子,你可以在其官方網(wǎng)站上找到 HTTPie 的很多有趣的應(yīng)用。再次重復(fù)一遍,一款再?gòu)?qiáng)大的工具也取決于你對(duì)它的了解程度。從個(gè)人而言,我更傾向于 HTTPie,因?yàn)槲以趯ふ乙环N更簡(jiǎn)潔的測(cè)試復(fù)雜網(wǎng)絡(luò)接口的方法。
相關(guān)文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤信息? 查看Linux硬盤大小類型和硬件信息的5種方法
使用Linux系統(tǒng)的過程中,查看和了解硬盤信息是非常重要的工作,尤其是對(duì)于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細(xì)信息? 3招輕松查看CPU型號(hào)、核心數(shù)和溫度
在日常運(yùn)維工作中,獲取 CPU 信息是系統(tǒng)運(yùn)維管理員常見的工作內(nèi)容,無(wú)論是為了性能調(diào)優(yōu)、硬件升級(jí)還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨(dú)樹一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡(jiǎn)化,優(yōu)化,現(xiàn)代化,實(shí)用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來簡(jiǎn)要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機(jī)U盤?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個(gè)win11裝機(jī)u盤,詳細(xì)如下2025-02-17Rsnapshot怎么用? 基于Rsync的強(qiáng)大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過 SSH 備份遠(yuǎn)程文件,接下來詳細(xì)介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時(shí)、每天、每周和每月的本地備份,以及如何進(jìn)2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡(jiǎn)化內(nèi)核搶占邏輯,通過減少與調(diào)度器相關(guān)的調(diào)用次數(shù),讓內(nèi)核在運(yùn)行時(shí)表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領(lǐng)創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預(yù)覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來了諸多優(yōu)化和改進(jìn),進(jìn)一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領(lǐng)域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來看看詳細(xì)安裝指南2025-01-16