curlやwgetなどコマンドラインで利用できる有名なHTTPクライアントがいくつか存在します。
今回紹介する「HTTPie」もそのような、ターミナルから起動するタイプのコマンドラインHTTPクライアントの一種です。curlやwgetがバイナリファイルにコンパイルして使用するツールなのに対し、HTTPieはPython製のスクリプトとなっている点が大きく異なります。
実行にはPython環境が必須となりますが、かわりに直感的に使用するための記法が豊富で、他のツールにはない工夫が凝らされています。
以下のような特徴を持っています。
- 妥当なデフォルト
- 表現力豊かで直感的なコマンドシンタックス
- 色づけされフォーマットされた出力
- ビルトインJSONサポート
- 永続的なセッションのサポート
- フォームとファイルのアップロード
- HTTPS、プロキシ、認証サポート
- 任意のリクエストデータ、ヘッダーのサポート
- wget風のダウンロード
- 拡張
- Linux、macOS、Windowsのサポート
- その他いろいろ
以下使用法を説明します。
httpieの使用方法
公式ドキュメントに従ってインストールします。macOSの場合HomebrewやMacPortsを使用する方法が最も簡単です。
Homebrewの場合:
brew install httpie
MacPortsの場合:
port install httpie
Pythonのパッケージマネージャpipを利用してインストールすることもできます。
pip install httpie
インストールが完了すれば、ターミナルで「http」コマンドが利用可能になります。httpieのコマンド名は「httpie」ではなく「http」なので注意が必要です。
基本的な使用法はExamplesで確認できます。
GETリクエストを送信する場合URLを引き数として渡します。
http httpie.org
URLのプロトコル部分が省略されると「http://httpie.org」とみなされます。https版をリクエストしたい場合など通常のURLを指定することもできます。
http https://httpie.org
ファイルのダウンロードは単にリダイレクトすればOKです。httpieはターミナル出力とリダイレクト出力で異なる出力を行うように設計されています。リダイレクトの場合レスポンスボディだけが出力されるため、簡単な書式でファイルとして保存できるのです。
http example.org/file > file
ダウンロードにはwget風のスタイルも利用できます。
http --download example.org/file
ローカルホストに対するショートカットも利用できます。少ないタイプ数で実行できます。
# GET http://localhost/foo http :/foo # GET http://localhost:3000/bar http :3000/bar # GET http://localhost/ http :
GETやPOST(リクエストデータが付属している場合自動的にPOSTと判定されます)以外のHTTPメソッドを使用する場合、「http メソッド URL」の書式を使用します。
PUTリクエストを、ヘッダとパラメーターつきで送信する場合。
http PUT example.org X-API-Token:123 name=John
formをサブミットする場合。
http -f POST example.org hello=World
DELETEリクエストを送信する場合。
http DELETE example.org/todos/7
その他認証やプロキシ、セッションを利用する方法など、より高度な内容が公式ドキュメントには掲載されています。使用する前に目を通しておくことをおすすめします。
▲以前紹介した、さまざまなHTTPリクエストを受け取ることができる「httpbin」と組み合わせると機能の確認が簡単に実行できます。
まとめ
httpieはPython製のツールであるため、実行時にPython環境が必要になるというデメリットが存在します。その反面コマンドシンタックスはcurlやwgetと比較するとシンプルで、人間が使いやすいように工夫されている印象があります。コマンドラインを利用してhttpリクエストの送受信を実行したい方は試してみてはいかがでしょうか。