Httpie は、人間が読みやすい構文と色付き出力を備えたコンソールHTTPクライアントで、コマンドラインからAPIをテストするために設計されています。このツールは直感的な構文を使います:http GET https://api.example.com/users — ヘッダーやリクエスト本文にフラグを指定する必要はありません。Httpie CLI Documentation (2026)によると、このユーティリティはデフォルトでJSON、セッション、認証、プラグインをサポートしています。
要点
Httpie(またはHTTPie)はPythonで書かれたコマンドラインユーティリティで、cURLに比べてHTTPリクエストの送信を簡素化します。主な違いは自然言語に近い構文です:引数はスペースで区切られ、ヘッダーはコロンで指定され、JSONデータは引用符のエスケープなしで等号で指定されます。
cURLで同じPOSTリクエストを送るには、少なくとも3つのフラグ(-X、-H、-d)と手動のJSONエスケープが必要です。Httpieはフラグなしで3つの単語で同じことを行い、自動的に Content-Type: application/json を設定して出力をハイライトします。レスポンスはデフォルトでインデントと構文ハイライト付きでフォーマットされます。
| 操作 | cURL | Httpie |
|---|---|---|
| GETリクエスト | curl https://api.example.com | http GET https://api.example.com |
| POST JSON | curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.com | http POST https://api.example.com name=test |
| ヘッダー | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie は主要パラメータにフラグを使わない単一のコマンドラインフォーマットを使用します。HTTPメソッドは最初の引数(GET、POST、PUT、DELETE、PATCH)、URLは2番目の引数で指定します。メソッドを省略すると、Httpieは自動的にGET(本文なしのリクエスト)またはPOST(本文あり)を選択します。
Authorization:"Bearer token"。name=John age=30。active:=true tags:=["dev","test"]。avatar@~/photo.jpg。Httpieはデータ型を自動的に判別します:key=valueが渡されると本文はJSONとして送信されます。--rawで生テキストが渡されるとプレーンテキストとして送信されます。form-data形式は -f フラグで有効になります。
# JSONデータとヘッダー付きのPOSTリクエスト
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# ハイライトとPretty-print付きのレスポンス
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
HttpieのJSONシリアライズは自動的に機能します:key=valueとして渡された値はJSONの文字列フィールドになります。数値や真偽値には key:=value を使用します。ネストされたオブジェクトはドット記法で作成します:address.city=Moscow。
Httpieは key@path 構文によるファイルとデータのアップロードにmultipart/form-data形式をサポートしています。ファイルの内容をリクエストの生本文として送信する場合は、入力リダイレクションを使用します:http POST example.com < file.json。レスポンスをファイルにダウンロードするには -d(download)フラグを使用します。
# ファイルからJSONを送信
http POST https://api.example.com/users < user.json
# multipartでのファイルアップロード
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Httpieのセッションはリクエスト間でクッキー、ヘッダー、認証パラメータなどの状態を保持します。セッションは --session=name フラグで作成します。セッションデータは ~/.httpie/sessions/ フォルダーのJSONファイルに保存されます。:readonly 接尾辞付きのセッションはリクエスト後に更新されません。
まず /auth/login に資格情報付きのPOSTリクエストを送信します — サーバーはセッションクッキーを返します。同じセッション内の保護されたエンドポイントへの以降のリクエストはすべて保存されたクッキーを自動的に送信し、モバイルアプリのAPIをテストする際のブラウザーの動作をシミュレートします。
# ステップ1:認証
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# ステップ2:保存済みセッションクッキー付きのリクエスト
http --session=app-test GET https://api.example.com/users/me
Httpie はフラグを介して主要な認証タイプをすべてサポートします:Basic Authには -a user:pass、Digestには --auth-type=digest、Bearer Tokenには --auth-type=bearer TOKEN。カスタムヘッダーは HeaderName:value としてコマンドの任意の場所に追加します。
OAuth 2.0 を使用したAPIをテストするには、トークンをAuthorizationヘッダーで渡します。Httpieはコアレベルでトークンのライフサイクルを管理しません — それは外部スクリプトが行います。http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource コマンドは、トークン付きヘッダーを明示的に指定することと同じです。
Httpie は、依存関係ゼロ(Python以外)と読みやすい出力のおかげでCI/CDパイプラインに最適です。コマンドは追加のパースなしでログで簡単に読めます。このツールはpipでインストールされ、Alpine、Ubuntu、JenkinsやGitLabの公式CIイメージなど、すべての一般的なDockerイメージで利用できます。これにより、HttpieはREST APIとマイクロサービスの自動テストに便利な選択肢になります。
典型的なシナリオは、アプリケーションのデプロイ後にAPIのステータスを確認することです。Httpieはhealthエンドポイントにリクエストを送信し、レスポンスが期待どおりでない場合はゼロ以外のコードで終了します。--check-status フラグは、ステータスコードが300以上の場合に自動的にエラーを返します。
# デプロイスクリプトでのヘルスチェック
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "APIは正常です" || \
echo "APIチェックが失敗しました"
Httpie はPackage Indexシステムを通じてプラグインをサポートしています。プラグインは新しい認証タイプ、シリアライズフォーマット、トランスポートを追加します。インストールはpipで行います:pip install httpie-plugin-name。インストール後、プラグインは次回のHttpie起動時に自動的に有効になります。
Httpieは --pretty=format オプションによる jq のようなフィルタリングと、--print によるcURL互換の出力をサポートしています。--quiet フラグは、CIログでの可読性を高めるために色付き出力を無効にします。レスポンスをプログラムで処理するには --body フラグを使用します。これはヘッダーなしでレスポンス本文のみを出力します。
# jqでJSONレスポンスからフィールドを抽出
http GET https://api.example.com/users/1 | jq '.name'
# レスポンス本文のみ出力(ヘッダーなし)
http --body GET https://api.example.com/health
# ファイルから異なるデータでバッチ送信
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie は--printフラグで出力フォーマットをサポートします:H(リクエストヘッダー)、B(リクエスト本文)、h(レスポンスヘッダー)、b(レスポンス本文)。--print=hbの組み合わせはレスポンスヘッダーと本文のみを出力します。--pretty=allフラグはインデント付きの色付きフォーマットを有効にします。
Httpieは HTTPIE_COLORS 変数によるカスタマイズをサポートしています。URL、ヘッダー、JSON、ステータスコードの色を設定します。さまざまな端末向けの組み込みテーマが利用できます:autumn、borland、fruity、monokai、native、tango。
プログラムで処理するには --body --pretty=none を使用します。これは生のJSONを返します。コンパクトな出力は、スクリプトでのAPIテスト自動化時にjq、sedなどのパーサーに渡すのに便利です。
Httpie は--printフラグで複数の出力フォーマットをサポートします:H(リクエストヘッダー)、B(リクエスト本文)、h(レスポンスヘッダー)、b(レスポンス本文)。--print=hbの組み合わせは、接続のメタ情報を除いてレスポンスヘッダーと本文のみを出力します。--pretty=allフラグは可読性のためにインデント付きの色付きフォーマットを有効にします。
Httpieは環境変数 HTTPIE_COLORS による色のカスタマイズをサポートしています。URL、ヘッダー、JSONキー、レスポンスのステータスコードの色を設定できます。さまざまな端末タイプや個人の好みに合わせて、autumn、borland、fruity、monokai、native、tangoの組み込みテーマが利用できます。
出力をプログラムで処理するには --body --pretty=none フラグの組み合わせを使用します。これは色やインデントなしで生のJSONを返します。コンパクトな出力は、シェルスクリプトでREST APIテストを自動化する際にjq、sedなどのコンソールパーサーに渡すのに便利です。
よくある質問
Httpie は、基本操作にフラグ不要のより読みやすい構文、自動JSONシリアライズ、レスポンスの色付きハイライト、組み込みのセッションサポートを提供します。cURLは低レベル操作(FTP、SMTP、非標準プロトコルとの連携)で欠かせません。
-f フラグ(または--form)を使用します:http -f POST example.com name=John file@~/photo.jpg。Httpieは自動的にContent-Type: multipart/form-dataを設定します。-fフラグなしではデータはapplication/jsonとして送信されます。
はい、Httpieは HTTPS をサポートしています。自己署名証明書には --verify=no フラグを使用します。カスタムCAファイルを指定するには:--verify=/path/to/cert.pem。デフォルトでは証明書検証が有効です。
いいえ、Httpieは WebSocket をサポートしておらず、HTTP/HTTPSプロトコル専用です。WebSocketにはwebsocatまたはwscatを使用してください。HttpieはREST、GraphQL、ファイル操作に焦点を当てています。
-d(download)フラグを使用します:http -d GET https://example.com/file.zip。HttpieはContent-DispositionヘッダーまたはURLから元の名前でファイルを保存します。カスタム名には -o output.zip を指定します。
まとめ
http [method] URL [key=value] [Header:value] はほとんどのリクエストにフラグを必要としません。ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。