hurl - 純粋なテキストでHTTPリクエストを記述・実行するRust製ツール
hurl - 純粋なテキストでHTTPリクエストを記述・実行するRust製ツール
API開発やテストの日々の作業において、コマンドラインから素早くHTTPリクエストを送信し、レスポンスを検証する必要があります。curl は業界標準ですが、複雑なリクエストチェーンや検証ロジックを記述する際、コマンドライン構文が冗長で読みにくくなります。
hurl は、簡潔な純粋テキスト形式でこの問題を解決します。Orangeがオープンソース化したこのRustツールは、Markdownのような構文でHTTPリクエストファイルを記述でき、アサーション、変数、リダイレクト、Cookie管理をサポートします——本質的にはテキストファイルで自動化APIテストを行うことです。
プロジェクト概要
| 属性 | 内容 |
|---|---|
| GitHub | Orange-OpenSource/hurl |
| ⭐ Stars | 18.7k |
| 🔧 言語 | Rust |
| ⚡ 特徴 | 純テキスト形式、チェーンリクエスト、アサーション検証 |
| 📅 更新 | 今日(アクティブ開発中) |
主要機能
1. 純テキストによるリクエスト定義
hurlは直感的なテキスト形式を使用し、複雑なコマンドライン引数を記憶する必要がありません:
GET https://api.example.com/users
Authorization: Bearer {{token}}
HTTP 200
[Asserts]
jsonpath "$[*].id" exists
jsonpath "$[0].name" == "Alice"
2. リクエストチェーンと変数受け渡し
レスポンスからデータを抽出し、後続のリクエストに渡すことが可能です:
# ログインしてトークンを取得
POST https://api.example.com/login
{
"username": "admin",
"password": "secret"
}
HTTP 200
[Captures]
token: jsonpath "$.token"
# トークンを使用して保護されたリソースにアクセス
GET https://api.example.com/profile
Authorization: Bearer {{token}}
HTTP 200
3. 豊富なアサーションサポート
レスポンスのステータス、ヘッダー、ボディコンテンツを検証する多様なアサーション方式を内包:
GET https://api.example.com/products/123
HTTP 200
[Asserts]
header "Content-Type" contains "application/json"
jsonpath "$.name" matches /Product .*/
jsonpath "$.price" isInteger
bytes count == 1024
4. curlエコシステムとの互換性
hurlはcurlコマンドにエクスポートでき、既存のcurlリクエストも直接インポートできます:
# curlコマンドにエクスポート
hurl --curl my_request.hurl
# HTMLレポートを生成
hurl --report-html report/ test.hurl
クイックスタート
# macOS
brew install hurl
# Linux
curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/latest/download/hurl-linux-x86_64.tar.gz
tar xf hurl-linux-x86_64.tar.gz
# テストを実行
hurl test.hurl
ユースケース
- APIテスト: バージョン管理可能な統合テストケースを記述
- CI/CD統合: 軽量な自動化テストツール
- 開発デバッグ: 複雑なcurlコマンドの代替
- ドキュメントアズコード: APIリクエストをドキュメントとして管理
まとめ
hurlはcurlと重量級APIテストツールの間のギャップを埋めます。コマンドラインツールの軽量性を保ちつつ、構造化されたテスト機能を提供します。シンプルで保守性の高いテストソリューションを追求する開発チームにとって、注目に値する選択肢です。