DEV Community

Cover image for curlieとは? curlとHTTPieを融合したHTTPクライアント徹底解説
Akira
Akira

Posted on • Originally published at apidog.com

curlieとは? curlとHTTPieを融合したHTTPクライアント徹底解説

ターミナルでAPIを確認するとき、curlのフラグが長くなり、JSONレスポンスが読みづらいと感じるなら、curlieを試す価値がある。curliecurlをラップし、HTTPie風の短い構文と色付き出力を提供するコマンドラインHTTPクライアントだ。この記事では、curlieのインストール、基本的な使い方、curl/HTTPieとの違い、そしてターミナルでの一時的な確認から再現可能なAPIテストへ移行する判断基準を実装ベースで整理する。

今すぐApidogを試す

curlieとは何か

curlieは、curlのフロントエンドとして動作するCLIツールだ。HTTP通信を独自に再実装するのではなく、HTTPieスタイルのコマンドを解析し、対応するcurl呼び出しを組み立て、実際の通信をローカルのcurlバイナリに渡す。

レスポンスはシンタックスハイライトされ、JSONは整形されて表示される。

curlieの実行例

この設計により、curlieはcurlの以下の特性をそのまま利用できる。

  • プロトコルサポート
  • TLS処理
  • プロキシ設定
  • curlの既存フラグ
  • ネットワークまわりの挙動

つまり、curlieは「curlを置き換えるツール」ではなく、「curlを読みやすく、書きやすくする薄いラッパー」と考えると分かりやすい。

curlieは単一のGoバイナリとして配布されている。Pythonランタイムやプラグインは不要で、バイナリをPATHに置けば使える。

curlieを使う理由

curlはほぼすべての環境で使えるが、APIの探索には少し扱いづらい場面がある。

例えば、curlでJSON APIを叩くと次のようになりがちだ。

curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer token123" \
  -d '{"name":"taro","role":"admin"}'
Enter fullscreen mode Exit fullscreen mode

これでも問題なく動くが、フラグが増えるほど読みづらくなる。レスポンスもデフォルトでは整形されない。

curlieを使うと、同じ操作をより短く書ける。

curlie POST https://api.example.com/users \
  Authorization:"Bearer token123" \
  name=taro \
  role=admin
Enter fullscreen mode Exit fullscreen mode

curlieが便利なポイントは次の通り。

  • JSONレスポンスが読みやすい

    色付きで表示され、JSONは整形される。

  • HTTPie風の短い構文が使える

    ヘッダー、クエリ、JSONボディを簡潔に書ける。

  • 内部ではcurlが動く

    curlの挙動やフラグをそのまま活用できる。

  • 依存関係が少ない

    単一バイナリで導入できる。

  • -vでデバッグしやすい

    実際に送受信されたヘッダーを確認できる。

curlieのインストール

curlieはプリビルドバイナリやパッケージマネージャーで配布されている。最新の手順はGitHubのリリースページで確認するのが確実だが、代表的な導入方法は以下の通り。

macOS: Homebrewでインストール

brew install curlie
Enter fullscreen mode Exit fullscreen mode

インストール後、バージョンを確認する。

curlie --version
Enter fullscreen mode Exit fullscreen mode

Goでインストール

Goが入っている場合は、次のコマンドでインストールできる。

go install github.com/rs/curlie@latest
Enter fullscreen mode Exit fullscreen mode

$GOPATH/binまたは$HOME/go/binPATHに含まれていることを確認する。

which curlie
curlie --version
Enter fullscreen mode Exit fullscreen mode

バイナリを直接配置する

リリースページからOS/アーキテクチャに合ったバイナリをダウンロードし、PATH配下に配置する。

chmod +x curlie
sudo mv curlie /usr/local/bin/

curlie --version
Enter fullscreen mode Exit fullscreen mode

curlieは内部でcurlを呼び出すため、システムにcurlが必要だ。macOSや多くのLinuxディストリビューションでは、通常curlは最初から利用できる。

確認するには次を実行する。

curl --version
Enter fullscreen mode Exit fullscreen mode

基本的な使い方

GETリクエストを送る

最もシンプルな使い方は、URLを指定するだけだ。

curlie httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

スキームを省略した場合、curlieはhttp://を補完する。明示したい場合は次のように書く。

curlie https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

メソッドを指定しない場合はGETとして扱われる。

POSTでJSONを送る

JSONボディを送る場合は、key=value形式でフィールドを渡す。

curlie POST httpbin.org/post name=apidog role=platform
Enter fullscreen mode Exit fullscreen mode

このコマンドは、概念的には次のJSONを送信する。

{
  "name": "apidog",
  "role": "platform"
}
Enter fullscreen mode Exit fullscreen mode

curlieはJSONボディを作成し、Content-Type: application/jsonを設定する。

ヘッダーを追加する

ヘッダーはHeader:value形式で指定する。

curlie GET httpbin.org/get Authorization:"Bearer token123"
Enter fullscreen mode Exit fullscreen mode

複数のヘッダーも指定できる。

curlie GET httpbin.org/get \
  Authorization:"Bearer token123" \
  X-Request-Id:"dev-001"
Enter fullscreen mode Exit fullscreen mode

クエリパラメータを追加する

クエリパラメータはparam==value形式で指定する。

curlie GET httpbin.org/get search==apidog page==1
Enter fullscreen mode Exit fullscreen mode

これは次のようなURLに相当する。

http://httpbin.org/get?search=apidog&page=1
Enter fullscreen mode Exit fullscreen mode

ヘッダー、クエリ、JSONを組み合わせる

APIの確認では、認証ヘッダー、クエリ、JSONボディを同時に扱うことが多い。

curlie POST https://api.example.com/users \
  Authorization:"Bearer token123" \
  debug==true \
  name=taro \
  role=admin
Enter fullscreen mode Exit fullscreen mode

この例では次を行う。

  • POST https://api.example.com/users?debug=trueへ送信
  • Authorizationヘッダーを付与
  • JSONボディとしてnameroleを送信

curlのフラグを混ぜて使う

curlieの短い構文で足りない場合は、curlのネイティブフラグをそのまま渡せる。

curlie -v --max-time 5 https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

-vは特にデバッグで有用だ。リクエスト/レスポンスヘッダーを確認できる。

curlie -v POST https://httpbin.org/post \
  Authorization:"Bearer token123" \
  name=apidog
Enter fullscreen mode Exit fullscreen mode

curlのフラグを詳しく確認したい場合は、curl REST APIガイドも参考になる。

よく使うcurlieコマンド例

APIの疎通確認

curlie https://api.example.com/health
Enter fullscreen mode Exit fullscreen mode

Bearerトークン付きリクエスト

curlie GET https://api.example.com/me \
  Authorization:"Bearer $API_TOKEN"
Enter fullscreen mode Exit fullscreen mode

JSONをPOST

curlie POST https://api.example.com/projects \
  Authorization:"Bearer $API_TOKEN" \
  name=demo \
  visibility=private
Enter fullscreen mode Exit fullscreen mode

タイムアウトを設定

curlie --max-time 10 https://api.example.com/slow-endpoint
Enter fullscreen mode Exit fullscreen mode

レスポンスヘッダーを確認

curlie -v https://api.example.com/users
Enter fullscreen mode Exit fullscreen mode

環境変数と組み合わせる

export API_BASE_URL="https://api.example.com"
export API_TOKEN="token123"

curlie GET "$API_BASE_URL/users" \
  Authorization:"Bearer $API_TOKEN"
Enter fullscreen mode Exit fullscreen mode

シェル履歴にトークンを直接残したくない場合は、環境変数を使う方が扱いやすい。

curlie vs curl vs HTTPie

3つのツールはいずれもターミナルからHTTPリクエストを送信できる。違いは、構文、出力、内部実装にある。

項目 curl HTTPie curlie
エンジン libcurl Python requestsスタイル curlをラップ
構文 -X, -H, -dなどのフラグ中心 key=value形式の短い構文 HTTPie風の短い構文
出力 生の出力 色付き、整形済みJSON 色付き、整形済みJSON
インストール 多くの環境でプリインストール Pythonパッケージ 単一Goバイナリ
curlフラグ 利用可能 利用不可 パススルー可能
依存関係 なし Pythonランタイム curlバイナリ
主な用途 スクリプト、アドホック確認 読みやすいアドホック確認 curl互換性を保ったアドホック確認

選び方はシンプルだ。

  • どの環境でも確実に動かしたい: curl
  • 読みやすい構文と出力を重視する: HTTPie
  • curlの挙動を使いながら、HTTPie風に書きたい: curlie

HTTPieについて詳しく知りたい場合は、HTTPieチュートリアルを参照できる。curlとHTTPieの構文差を比較したい場合は、curlとHTTPieの比較も役立つ。

その他のCLI/GUIツールも含めて検討するなら、REST APIテスト用curl代替ツールのまとめを確認するとよい。

curlieが向いているケース

curlieは、短時間でAPIを探索する用途に向いている。

例えば、次のような作業だ。

  • 新しいエンドポイントのレスポンスを確認する
  • JSONの構造を目視で確認する
  • 認証ヘッダーやクエリパラメータを試す
  • -vで実際のHTTPヘッダーを確認する
  • curlコマンドを書く前に、短い構文で挙動を確認する

開発中の典型的な流れは次のようになる。

# 1. まず疎通確認
curlie https://api.example.com/health

# 2. 認証付きでユーザー情報を確認
curlie GET https://api.example.com/me \
  Authorization:"Bearer $API_TOKEN"

# 3. POSTの挙動を確認
curlie POST https://api.example.com/users \
  Authorization:"Bearer $API_TOKEN" \
  name=taro \
  role=admin

# 4. 詳細ログでヘッダーを確認
curlie -v POST https://api.example.com/users \
  Authorization:"Bearer $API_TOKEN" \
  name=taro \
  role=admin
Enter fullscreen mode Exit fullscreen mode

このような「試す、見る、修正する」という作業では、curlieは非常に使いやすい。

curlieが向いていないケース

一方で、curlieはテストランナーではない。次のような用途では限界がある。

  • リクエストをチームで保存・共有したい
  • ローカル、ステージング、本番の環境を切り替えたい
  • ステータスコードやレスポンスフィールドを自動検証したい
  • CI/CDでAPIテストを実行したい
  • テスト結果をレポートとして残したい

例えば、curlieの結果をgrepjqでチェックするスクリプトを書き始めると、管理が難しくなる。

response=$(curlie https://api.example.com/health)

echo "$response" | grep "ok"
Enter fullscreen mode Exit fullscreen mode

このようなチェックが増えてきたら、アドホックな確認ではなく、保存可能で再現可能なAPIテストとして管理する段階だ。

アップグレードパス: 一時的な確認から再現可能なワークフローへ

curlieは探索に向いている。だが、同じリクエストを繰り返し実行したり、チームで共有したり、CIで検証したりする場合は、専用のプラットフォームへ移す方がよい。

ApidogでAPIワークフローを管理する例

Apidogは、curlieで確認したAPIリクエストを、保存・共有・検証できるワークフローに移すためのツールだ。curlieのターミナル代替ではなく、ターミナルで探索した後の次のレイヤーとして使う。

Apidogでは次のようなことができる。

  • リクエストを保存する

    シェル履歴ではなく、整理されたコレクションとして管理できる。

  • 環境を管理する

    ローカル、ステージング、本番などの変数を切り替えて同じリクエストを実行できる。

  • アサーションを追加する

    ステータスコード、レスポンスフィールド、スキーマなどを検証できる。

  • CIでテストを実行する

    apidog runを使って、保存済みのテストシナリオをパイプラインで実行できる。

  • チームで共有する

    一度デバッグしたリクエストを、チームメンバーが再利用できる。

実践的には、次の流れが扱いやすい。

  1. curlieでエンドポイントを素早く探索する
  2. 必要なヘッダー、クエリ、ボディを確定する
  3. Apidogにリクエストとして保存する
  4. ステータスコードやレスポンスフィールドのアサーションを追加する
  5. CIで定期的に実行する

APIテストの考え方を整理したい場合は、APIテストガイドが参考になる。

よくある質問

curlieはcurlの代替になるのか?

厳密には代替ではない。curlieはcurlの上で動作するフロントエンドだ。短い構文をcurl呼び出しに変換し、出力を読みやすく整形する。実際の通信はcurlが担当する。

curlieはCI/CDパイプラインで使えるのか?

シェルスクリプトからcurlieを呼び出すことはできる。ただし、curlie自体は自動テスト向けに設計されていない。アサーション、保存済みシナリオ、構造化レポートは提供しない。

CIでAPIを検証するなら、レスポンスを評価し、失敗時にビルドを落とせるランナーが必要になる。Apidogのapidog runはその用途に対応する。その他の選択肢は、主要なAPIテストクライアントのリストでも確認できる。

curlieはHTTPieとどう違うのか?

curlieはHTTPie風の構文と色付き出力を提供するため、使い勝手は似ている。違いは内部実装だ。

HTTPieはPython製のスタンドアロンツールで、独自のHTTPクライアントとして動作する。curlieはGo製の薄いラッパーで、実際の通信はcurlに渡す。そのため、curlのフラグや挙動をそのまま利用したい場合はcurlieが向いている。

curlieが実行する実際のリクエスト内容を確認できるか?

できる。-vフラグを付けて実行すると、リクエストヘッダー、レスポンスヘッダー、通信の詳細を確認できる。

curlie -v GET https://httpbin.org/get \
  Authorization:"Bearer token123"
Enter fullscreen mode Exit fullscreen mode

これは、認証ヘッダーが正しく送られているか、サーバーがどのヘッダーを返しているかを確認する際に役立つ。

結論

curlieは、curlの強力さを維持しながら、HTTPie風の短い構文と読みやすい出力を提供する実用的なCLIツールだ。エンドポイントの疎通確認、JSONレスポンスの確認、認証ヘッダーのデバッグなど、ターミナルでのアドホックなAPI探索に向いている。

一方で、リクエストを保存し、共有し、アサーションを追加し、CIで実行したい場合は、テストワークフローとして管理する段階だ。Apidogをダウンロードして、curlieで探索したAPIを、チームで再利用できる保存済みリクエスト、環境、テストシナリオに変換できる。

素早い確認にはcurlieを使い、繰り返し検証すべき作業はApidogで管理するのが実践的な使い分けだ。

Top comments (0)