當前位置:
首頁 > 知識 > HTTPie:替代 Curl 和 Wget 的現代 HTTP 命令行客戶端

HTTPie:替代 Curl 和 Wget 的現代 HTTP 命令行客戶端

HTTPie:替代 Curl 和 Wget 的現代 HTTP 命令行客戶端


HTTPie 工具是現代的 HTTP 命令行客戶端,它能通過命令行界面與 Web 服務進行交互。

-- Magesh Maruthamuthu

大多數時間我們會使用 curl 命令或是 wget 命令下載文件或者做其他事。

我們以前曾寫過 最佳命令行下載管理器 的文章。你可以點擊相應的 URL 連接來瀏覽這些文章。

  • aria2 – Linux 下的多協議命令行下載工具
  • Axel – Linux 下的輕量級命令行下載加速器
  • Wget – Linux 下的標準命令行下載工具
  • curl – Linux 下的實用的命令行下載工具

今天我們將討論同樣的話題。這個實用程序名為 HTTPie。

它是現代命令行 http 客戶端,也是 curl 和 wget 命令的最佳替代品。


什麼是 HTTPie?

HTTPie (發音是 aitch-tee-tee-pie) 是一個 HTTP 命令行客戶端。

HTTPie 工具是現代的 HTTP 命令行客戶端,它能通過命令行界面與 Web 服務進行交互。

它提供一個簡單的 http 命令,允許使用簡單而自然的語法發送任意的 HTTP 請求,並會顯示彩色的輸出。

HTTPie 能用於測試、調試及與 HTTP 伺服器交互。


主要特點

  • 具表達力的和直觀語法
  • 格式化的及彩色化的終端輸出
  • 內置 JSON 支持
  • 表單和文件上傳
  • HTTPS、代理和認證
  • 任意請求數據
  • 自定義頭部
  • 持久化會話
  • 類似 wget 的下載
  • 支持 Python 2.7 和 3.x

在 Linux 下如何安裝 HTTPie

大部分 Linux 發行版都提供了系統包管理器,可以用它來安裝。

Fedora 系統,使用 DNF 命令 來安裝 httpie:


$ sudo dnf install httpie

Debian/Ubuntu 系統,使用 APT-GET 命令 或 APT 命令 來安裝 HTTPie。

$ sudo apt install httpie

基於 Arch Linux 的系統,使用 Pacman 命令 來安裝 HTTPie。


$ sudo pacman -S httpie

RHEL/CentOS 的系統,使用 YUM 命令 來安裝 HTTPie。


$ sudo yum install httpie

openSUSE Leap 系統,使用 Zypper 命令 來安裝 HTTPie。


$ sudo zypper install httpie

用法

如何使用 HTTPie 請求 URL?

HTTPie 的基本用法是將網站的 URL 作為參數。


# http 2daygeek.com

HTTP/1.1 301 Moved Permanently

CF-RAY: 4c4a618d0c02ce6d-LHR

Cache-Control: max-age=3600

Connection: keep-alive

Date: Tue, 09 Apr 2019 06:21:28 GMT

Expires: Tue, 09 Apr 2019 07:21:28 GMT

Location: https://2daygeek.com/

Server: cloudflare

Transfer-Encoding: chunked

Vary: Accept-Encoding

如何使用 HTTPie 下載文件

你可以使用帶 --download 參數的 HTTPie 命令下載文件。類似於 wget 命令。

# http --download https://www.2daygeek.com/wp-content/uploads/2019/04/Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.png

HTTP/1.1 200 OK

Accept-Ranges: bytes

CF-Cache-Status: HIT

CF-RAY: 4c4a65d5ca360a66-LHR

Cache-Control: public, max-age=7200

Connection: keep-alive

Content-Length: 32066

Content-Type: image/png

Date: Tue, 09 Apr 2019 06:24:23 GMT

Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"

Expires: Tue, 09 Apr 2019 08:24:23 GMT

Last-Modified: Mon, 08 Apr 2019 04:54:25 GMT

Server: cloudflare

Set-Cookie: __cfduid=dd2034b2f95ae42047e082f59f2b964f71554791063; expires=Wed, 08-Apr-20 06:24:23 GMT; path=/; domain=.2daygeek.com; HttpOnly; Secure

Vary: Accept-Encoding

Downloading 31.31 kB to "Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.png"

Done. 31.31 kB in 0.01187s (2.58 MB/s)

你還可以使用 -o 參數用不同的名稱保存輸出文件。


# http --download https://www.2daygeek.com/wp-content/uploads/2019/04/Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.png -o Anbox-1.png

HTTP/1.1 200 OK

Accept-Ranges: bytes

CF-Cache-Status: HIT

CF-RAY: 4c4a68194daa0a66-LHR

Cache-Control: public, max-age=7200

Connection: keep-alive

Content-Length: 32066

Content-Type: image/png

Date: Tue, 09 Apr 2019 06:25:56 GMT

Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"

Expires: Tue, 09 Apr 2019 08:25:56 GMT

Last-Modified: Mon, 08 Apr 2019 04:54:25 GMT

Server: cloudflare

Set-Cookie: __cfduid=d3eea753081690f9a2d36495a74407dd71554791156; expires=Wed, 08-Apr-20 06:25:56 GMT; path=/; domain=.2daygeek.com; HttpOnly; Secure

Vary: Accept-Encoding

Downloading 31.31 kB to "Anbox-1.png"

Done. 31.31 kB in 0.01551s (1.97 MB/s)

如何使用 HTTPie 恢復部分下載?

你可以使用帶 -c 參數的 HTTPie 繼續下載。


# http --download --continue https://speed.hetzner.de/100MB.bin -o 100MB.bin

HTTP/1.1 206 Partial Content

Connection: keep-alive

Content-Length: 100442112

Content-Range: bytes 4415488-104857599/104857600

Content-Type: application/octet-stream

Date: Tue, 09 Apr 2019 06:32:52 GMT

ETag: "5253f0fd-6400000"

Last-Modified: Tue, 08 Oct 2013 11:48:13 GMT

Server: nginx

Strict-Transport-Security: max-age=15768000; includeSubDomains

Downloading 100.00 MB to "100MB.bin"

| 24.14 % 24.14 MB 1.12 MB/s 0:01:07 ETA^C

你根據下面的輸出驗證是否同一個文件:


[email protected]:/var/log# ls -lhtr 100MB.bin

-rw-r--r-- 1 root root 25M Apr 9 01:33 100MB.bin

如何使用 HTTPie 上傳文件?

你可以通過使用帶有小於號 < 的 HTTPie 命令上傳文件


$ http https://transfer.sh < Anbox-1.png

如何使用帶有重定向符號 > 下載文件?

你可以使用帶有重定向 > 符號的 HTTPie 命令下載文件。


# http https://www.2daygeek.com/wp-content/uploads/2019/03/How-To-Install-And-Enable-Flatpak-Support-On-Linux-1.png > Flatpak.png

# ls -ltrh Flatpak.png

-rw-r--r-- 1 root root 47K Apr 9 01:44 Flatpak.png

發送一個 HTTP GET 請求?

您可以在請求中發送 HTTP GET 方法。GET 方法會使用給定的 URI,從給定伺服器檢索信息。


# http GET httpie.org

HTTP/1.1 301 Moved Permanently

CF-RAY: 4c4a83a3f90dcbe6-SIN

Cache-Control: max-age=3600

Connection: keep-alive

Date: Tue, 09 Apr 2019 06:44:44 GMT

Expires: Tue, 09 Apr 2019 07:44:44 GMT

Location: https://httpie.org/

Server: cloudflare

Transfer-Encoding: chunked

Vary: Accept-Encoding

提交表單?

使用以下格式提交表單。POST 請求用於向伺服器發送數據,例如客戶信息、文件上傳等。要使用 HTML 表單。


# http -f POST Ubuntu18.2daygeek.com hello="World"

HTTP/1.1 200 OK

Accept-Ranges: bytes

Connection: Keep-Alive

Content-Encoding: gzip

Content-Length: 3138

Content-Type: text/html

Date: Tue, 09 Apr 2019 06:48:12 GMT

ETag: "2aa6-5844bf1b047fc-gzip"

Keep-Alive: timeout=5, max=100

Last-Modified: Sun, 17 Mar 2019 15:29:55 GMT

Server: Apache/2.4.29 (Ubuntu)

Vary: Accept-Encoding

運行下面的指令以查看正在發送的請求。


# http -v Ubuntu18.2daygeek.com

GET / HTTP/1.1

Accept: */*

Accept-Encoding: gzip, deflate

Connection: keep-alive

Host: ubuntu18.2daygeek.com

User-Agent: HTTPie/0.9.8

hello=World

HTTP/1.1 200 OK

Accept-Ranges: bytes

Connection: Keep-Alive

Content-Encoding: gzip

Content-Length: 3138

Content-Type: text/html

Date: Tue, 09 Apr 2019 06:48:30 GMT

ETag: "2aa6-5844bf1b047fc-gzip"

Keep-Alive: timeout=5, max=100

Last-Modified: Sun, 17 Mar 2019 15:29:55 GMT

Server: Apache/2.4.29 (Ubuntu)

Vary: Accept-Encoding

HTTP 認證?

當前支持的身份驗證認證方案是基本認證(Basic)和摘要驗證(Digest)。

基本認證:


$ http -a username:password example.org

摘要驗證:


$ http -A digest -a username:password example.org

提示輸入密碼:


$ http -a username example.org


via: https://www.2daygeek.com/httpie-curl-wget-alternative-http-client-linux/

作者: Magesh Maruthamuthu 選題: lujun9972 譯者: zgj1024 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出


點擊「了解更多」可訪問文內鏈接

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

我們做了一個極簡的文章列表小程序
學習使用樹莓派的 7 個資源

TAG:Linux技術 |