Httpieとは:コマンドライン用HTTPクライアント

著者: IT Sectr 公開日: 2026-05-08 読了時間: 8 分

Httpie は、人間が読みやすい構文と色付き出力を備えたコンソールHTTPクライアントで、コマンドラインからAPIをテストするために設計されています。このツールは直感的な構文を使います:http GET https://api.example.com/users — ヘッダーやリクエスト本文にフラグを指定する必要はありません。Httpie CLI Documentation (2026)によると、このユーティリティはデフォルトでJSON、セッション、認証、プラグインをサポートしています。

要点

  • Httpie は、読みやすい構文、色付きハイライト、組み込みのJSONシリアライズを備えたcURLの現代的代替品です。
  • 構文 リクエストは http [method] URL [header:value] [key=value] というスキームで組み立てられ、追加のフラグは不要です。
  • デフォルトでJSON — リクエスト本文はJSONオブジェクトとして扱われ、Content-Typeヘッダーが自動的に設定されます。
  • セッション はリクエスト間でクッキーとヘッダーを保持するため、認証付きエンドポイントのテストに便利です。
  • プラグイン は追加フォーマット、認証タイプ、カスタムトランスポートのサポートでHttpieを拡張します。

Httpieとは何か、cURLとの違い

Httpie(またはHTTPie)はPythonで書かれたコマンドラインユーティリティで、cURLに比べてHTTPリクエストの送信を簡素化します。主な違いは自然言語に近い構文です:引数はスペースで区切られ、ヘッダーはコロンで指定され、JSONデータは引用符のエスケープなしで等号で指定されます。

cURLとHttpieの比較

cURLで同じPOSTリクエストを送るには、少なくとも3つのフラグ(-X、-H、-d)と手動のJSONエスケープが必要です。Httpieはフラグなしで3つの単語で同じことを行い、自動的に Content-Type: application/json を設定して出力をハイライトします。レスポンスはデフォルトでインデントと構文ハイライト付きでフォーマットされます。

操作cURLHttpie
GETリクエストcurl https://api.example.comhttp GET https://api.example.com
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.comhttp POST https://api.example.com name=test
ヘッダーcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Httpieでのリクエスト構文

Httpie は主要パラメータにフラグを使わない単一のコマンドラインフォーマットを使用します。HTTPメソッドは最初の引数(GET、POST、PUT、DELETE、PATCH)、URLは2番目の引数で指定します。メソッドを省略すると、Httpieは自動的にGET(本文なしのリクエスト)またはPOST(本文あり)を選択します。

引数の種類

  • Header:Value — コロン付きのリクエストヘッダー。コロンの後にスペースは入れません:Authorization:"Bearer token"
  • key=value — リクエスト本文内のJSONオブジェクトのフィールド:name=John age=30
  • key:=value — 非文字列のJSON値(数値、真偽値、配列):active:=true tags:=["dev","test"]
  • key@file — ファイルから値を読み込む:avatar@~/photo.jpg

Httpieはデータ型を自動的に判別します:key=valueが渡されると本文はJSONとして送信されます。--rawで生テキストが渡されるとプレーンテキストとして送信されます。form-data形式は -f フラグで有効になります。

bash
# 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"
}

JSONとファイルの操作

HttpieのJSONシリアライズは自動的に機能します:key=valueとして渡された値はJSONの文字列フィールドになります。数値や真偽値には key:=value を使用します。ネストされたオブジェクトはドット記法で作成します:address.city=Moscow

ファイルとバイナリデータのアップロード

Httpieは key@path 構文によるファイルとデータのアップロードにmultipart/form-data形式をサポートしています。ファイルの内容をリクエストの生本文として送信する場合は、入力リダイレクションを使用します:http POST example.com < file.json。レスポンスをファイルにダウンロードするには -d(download)フラグを使用します。

bash
# ファイルから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をテストする際のブラウザーの動作をシミュレートします。

bash
# ステップ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とBearer Token

OAuth 2.0 を使用したAPIをテストするには、トークンをAuthorizationヘッダーで渡します。Httpieはコアレベルでトークンのライフサイクルを管理しません — それは外部スクリプトが行います。http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource コマンドは、トークン付きヘッダーを明示的に指定することと同じです。

CI/CDスクリプトでのHttpieの使用

Httpie は、依存関係ゼロ(Python以外)と読みやすい出力のおかげでCI/CDパイプラインに最適です。コマンドは追加のパースなしでログで簡単に読めます。このツールはpipでインストールされ、Alpine、Ubuntu、JenkinsやGitLabの公式CIイメージなど、すべての一般的なDockerイメージで利用できます。これにより、HttpieはREST APIとマイクロサービスの自動テストに便利な選択肢になります。

デプロイ時のhealthエンドポイントの確認

典型的なシナリオは、アプリケーションのデプロイ後にAPIのステータスを確認することです。Httpieはhealthエンドポイントにリクエストを送信し、レスポンスが期待どおりでない場合はゼロ以外のコードで終了します。--check-status フラグは、ステータスコードが300以上の場合に自動的にエラーを返します。

bash
# デプロイスクリプトでのヘルスチェック
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "APIは正常です" || \
    echo "APIチェックが失敗しました"

Httpieの高度な機能とプラグイン

Httpie はPackage Indexシステムを通じてプラグインをサポートしています。プラグインは新しい認証タイプ、シリアライズフォーマット、トランスポートを追加します。インストールはpipで行います:pip install httpie-plugin-name。インストール後、プラグインは次回のHttpie起動時に自動的に有効になります。

人気のHttpieプラグイン

  • httpie-jwt-auth — refresh tokenメカニズムによるJWTトークンの自動取得と更新。
  • httpie-oauth — トークンへの自動コード交換を伴うOAuth 2.0 Client CredentialsおよびAuthorization Codeフローのサポート。
  • httpie-editor — 送信前にリクエスト本文をテキストエディター(vim、nano、VS Code)で開きます。
  • httpie-image — レスポンスの画像を端末に直接表示します(kittyまたはiTerm2が必要)。

スクリプト化と出力の解析

Httpieは --pretty=format オプションによる jq のようなフィルタリングと、--print によるcURL互換の出力をサポートしています。--quiet フラグは、CIログでの可読性を高めるために色付き出力を無効にします。レスポンスをプログラムで処理するには --body フラグを使用します。これはヘッダーなしでレスポンス本文のみを出力します。

bash
# 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。

JSON形式での出力

プログラムで処理するには --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の組み込みテーマが利用できます。

フォーマットなしのJSON形式での出力

出力をプログラムで処理するには --body --pretty=none フラグの組み合わせを使用します。これは色やインデントなしで生のJSONを返します。コンパクトな出力は、シェルスクリプトでREST APIテストを自動化する際にjq、sedなどのコンソールパーサーに渡すのに便利です。

よくある質問

標準のcURLよりHttpieが優れているのはなぜですか?

Httpie は、基本操作にフラグ不要のより読みやすい構文、自動JSONシリアライズ、レスポンスの色付きハイライト、組み込みのセッションサポートを提供します。cURLは低レベル操作(FTP、SMTP、非標準プロトコルとの連携)で欠かせません。

Httpieでform-dataを送信するには?

-f フラグ(または--form)を使用します:http -f POST example.com name=John file@~/photo.jpg。Httpieは自動的にContent-Type: multipart/form-dataを設定します。-fフラグなしではデータはapplication/jsonとして送信されます。

HttpieはHTTPSと証明書をサポートしていますか?

はい、Httpieは HTTPS をサポートしています。自己署名証明書には --verify=no フラグを使用します。カスタムCAファイルを指定するには:--verify=/path/to/cert.pem。デフォルトでは証明書検証が有効です。

HttpieをWebSocketに使えますか?

いいえ、Httpieは WebSocket をサポートしておらず、HTTP/HTTPSプロトコル専用です。WebSocketにはwebsocatまたはwscatを使用してください。HttpieはREST、GraphQL、ファイル操作に焦点を当てています。

Httpieでレスポンスをファイルに保存するには?

-d(download)フラグを使用します:http -d GET https://example.com/file.zip。HttpieはContent-DispositionヘッダーまたはURLから元の名前でファイルを保存します。カスタム名には -o output.zip を指定します。

まとめ

  • Httpie — 直感的な構文、デフォルトのJSON、色付き出力を備えたコンソールHTTPクライアント。
  • 基本構文 http [method] URL [key=value] [Header:value] はほとんどのリクエストにフラグを必要としません。
  • JSONシリアライズ は自動です:key=valueはJSONフィールドになり、数値と真偽値にはkey:=valueを使用します。
  • セッション は認証付きエンドポイントのテストのため、リクエスト間でクッキーとヘッダーを保持します。
  • 認証 は--auth-typeフラグでBasic、Digest、Bearer、カスタムスキームをサポートします。
  • CI/CD統合 — --check-statusと依存関係ゼロで、Httpieはデプロイスクリプトに便利です。
  • ファイルアップロード は-fフラグとkey@file構文によるmultipart form-data経由です。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください