httpieはコマンドラインからhttpリクエストを作成して送信できるユーティリティです。APIをテストするときに、httpieを使ってリクエストを送信する必要がある場合がたまにあります。そこで、本文では、httpieの使い方を皆さんに紹介します。また、httpリクエストをより直感で簡単に送信するため、より使いやすいツールのApidogをも一緒に紹介していこうと思います。
httpieとは
httpieとは、コマンドラインからHTTPリクエストを作成し実行できるユーティリティツールです。
主な特徴は以下の通りです。
- シンプルで直感的なインターフェースを持ち、curlよりも扱いやすい
- JSONとXMLのフォーマットした表示とカラーハイライトに対応している
- HTTPメソッド、ヘッダー、データなどの指定が簡単
- 自動的にリクエストデータをJSONとしてエンコードしてくれる
- 設定ファイルによるデフォルト値の指定ができる
コマンドの基本形はhttp [メソッド] [URL] [オプション]
という感じで、例えば
http GET http://example.com X-API-Key:foo
のようにHTTPメソッドとURLを指定し、さらにヘッダーやデータをオプションで設定できます。
httpieとCURLとの比較
同じくhttpリクエスト用のコマンドラインのユーティリティとして、httpieをよくCURLに比較する場合が多くなります。結論から言うと、httpieは、小回りが効くHTTP通信に向いて、curlは大規模データ転送や細かい設定に向いていると思います。
httpieの特徴
- 直感的なinterface
- curlよりもシンプルで分かりやすい操作感
- 色分け表示
- レスポンスデータをカラーフォーマットして表示
- JSONサポート
- JSONデータの送受信が楽。フォーマット済み表示も可能
- シンプルな認証
- ユーザ名、パスワードの指定が簡単
curlの特徴
- 豊富なオプション
- httpieよりも細かい設定が可能
- 転送速度
- 大容量データ転送に最適化されている
- 歴史
- 老舗でSSH接続など多機能
- 使い勝手
- httpieほど直感的とはいえない
と言うことで、Curlでは利用可能なオプションがより豊富で、より細かい設定が可能ですが、httpieはシンプルで直感的なインターフェースが特徴で、REST APIなどのテストや開発で手軽にHTTP通信をしたい場合に便利です。
httpieの使い方をわかりやすく解説
それでは、httpieというユーティリティを使ってリクエストを送信するには、どうしたらいいですか?次は、httpieの基本的な使い方を皆さんに紹介します。
基本的な使い方
httpieを使ってhttpリクエストを送信するには、以下のコードのように、http+ [メソッド]+ [URL]+ [オプション]の形でコマンドを入力すれば良いのです。
http [メソッド] [URL] [オプション]
実際例:
http GET http://example.com
詳細オプション
- -a : 認証情報の指定
- -f : フォーマットの変更(JSON, HTML, YAML など)
- -v : 通信の詳細を表示
ヘッダーの指定
httpリクエストを送信する前に、ヘッダー情報を指定する必要がある場合、次のようにHeaderを定義することができます。
http GET http/example.com User-Agent:MyClient
データの送信
httpieでPOSTやPUTなどのリクエストを送信する際、送信するデータをkey=valueの形式で指定する必要があります。ここのvalueには文字列や数値だけでなく、配列やオブジェクトも直接記述できます。また、オブジェクトや配列はPythonのリストやディクショナリ記法を利用します。
http POST http://example.com name=John email=john@example.com
JSONデータの送信
httpieでPOSTリクエストを送信し、リクエストボディにJSONデータを含めるサンプルコードは以下のようになります。
http POST example.com name=John < data.json
ここで、data.json
はPOSTしたいJSONデータを含むファイルです。
例えば、下記のようなJSONを用意します。
{
"name": "John Smith",
"age": 35,
"hobbies": [
"reading",
"tennis",
"programming"
]
}
これをdata.json
というファイルとして保存し、上記のコマンドでPOSTリクエストを送信すると、このJSONデータがリクエストボディとして送信されます。
また、データをインラインで指定することもできます。
http POST example.com name=John age=35 hobbies:='["reading","tennis","programming"]'
以上の基本的な形式の他にも、セッションの保持、プロキシの設定、出力のリダイレクトなどさまざまなオプションが豊富に用意されています。
Apidog:より高度で使いやすいAPIテストツール
httpieとは異なり、Apidogはより使いやすいAPIテストツールになります。Apidogはより高度なAPIテスト機能を実現できるだけではなく、API開発に必要なAPI設計、仕様書生成、モックサーバーなどの様々な機能を無料で利用することができます。
httpieとApidogとの相違点
httpieとPostmanはともにAPIテストや開発でよく使われるツールですが、以下の点で大きく異なります。
認証機能
PostmanのほうがBasic Auth、OAuth、Digest Authなど、幅広い認証方式に対応しています。httpieはBasic AuthとDigest Authに主に対応しています。
コマンドラインvsGUI
httpieはコマンドラインベースで、スクリプトでの自動化に向いています。一方ApidogはグラフィカルなUIを持ち、視覚的な操作感が良いです。
環境変数
Apidogでは環境変数の設定ができて便利ですが、httpieには直属の機能はありません(シェル変数の利用は可能ですけど)。
リクエスト設定
Apidogではヘッダやクエリ、ボディの設定がGUI上で視覚的に行えます。httpieはコマンドライン引数やファイルでの指定が基本です。
レスポンス出力
httpieのほうがシンプルで分かりやすい出力結果です。Apidogは視覚的に詳細な情報を確認できます。
追加機能
httpieにはJSONのシリアライズ/デシリアライズ機能やプラグイン機構があります。Apidogではドキュメント作成やコラボレーション、テスト機能が豊富です。
ApidogでAPIをより簡単にテストする
Apidogは、GET、POSTやPUTなどの全てのHTTPメソッドにも対応しており、直感的なUIでただの1クリックだけで、APIのテストを行う事ができます。
ステップ⒈Apidogを開き、「新しいAPI」をクリックして、単体テストを行うAPIを新規に作成します。
ステップ⒉APIが使用するHTTPメソッドを選択した上、エンドポイントのURLを入力します。
ステップ⒊APIの仕様書に記載されているように、必要なパラメータなどの情報を記入して送信ボタンをクリックして、APIのリクエストを送信して、レスポンスを取得します。

以上の手順を参照して、APIの単体テストを簡単に行う事ができます。また、Apidogにレスポンスの「自動検証」という機能も備えています。
Apidogで複数のリクエストを一括送信
また、特に大きなプロジェクトの中、APIの信頼性検証や再現性確認などの原因で、多数のリクエストを一括に送信する必要がよくあります。ここで、Apidogの自動テスト機能を使って、テストステップを簡単に追加して、複数のリクエストを一括に送信することも可能です。
ステップ⒈左側のメニューから「自動テスト」を選択して、「テストのシナリオを新規作成」して、「ステップを追加」をクリックすると、API呼び出しをテストステップとして追加することができます。
ステップ⒉このモジュールでは、ステップ数の上限がないので、呼び出したいAPIが何個あっても、ここに追加することができます。APIの呼び出しの追加が完了した後、「実行」ボタンをクリックして、各APIを追加順に従って呼び出すことができます。

テストステップの中に、特定のAPIの単体テストを複数回繰り返す必要がある場合、それを個別に繰り返す回数を設定することも可能です。
また、APIテストの自動化をより順調に実行するために、特定のテストステップを対象にして、グループ化にされたり、条件分岐を適用したりすることもできます。

まとめ
ApidogはUIベースのビジュアルな操作性を実現したAPIテストツールで、httpie以上の機能を備えています。複雑な認証設定やテストの自動実行など、大規模なAPIプロジェクトで必要な機能を揃えています。
例えば、単一のAPIをテストする場合は1クリックでリクエストを送信できます。また、複数のAPIを一括テストする必要がある場合も、テストステップを追加して実行できるため、効率的な検証が可能です。テストケースごとの繰り返し実行や条件分岐の設定も簡単な操作で適用できます。
このようにApidogでは、小規模から大規模まで幅広い段階のAPIプロジェクトに対応できる質の高いテスト機能を提供している点が大きな特徴です。シンプルなコマンドツールであるhttpieとは異なるアプローチをされています。API開発/テストを行う際にはApidogを活用することをオススメします。