Hurl は一風変わった HTTP クライアントツール。同僚に教えてもらった。HTTP リクエストを宣言的に書いたテキストファイルを Hurl が解釈して実際の HTTP リクエストを発行する。レスポンスの検証やキャプチャなどの機能もあり、HTTP リクエストのテスト用途にも使える。
これも Rust で書かれており、シングルバイナリで動く。内部では HTTP エンジンに libcurl を使っていて、実質 curl のシンタックスシュガー。
例を見れば一発でどういうものかわかる。
# Get home: GET https://example.net HTTP/1.1 200 [Captures] csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)" # Do login! POST https://example.net/login?user=toto&password=1234 X-CSRF-TOKEN: {{csrf_token}} HTTP/1.1 302
curl で一連の(前後で実行順序の依存関係がある)HTTP リクエストを発行するシェルスクリプトを書くようなシーンで良い代替になりそう。curl 自体はともかく、シェルスクリプトで色々頑張るのは割と苦労するので*1、悩むくらいなら他に依存なしで必要な機能が揃っている hurl だけで書くのも選択肢として悪くない、かもしれない。
既視感あるなと思って思い出したのが
で、リクエストの書き方はよく似てるのだけど*2、JetBrains の方には Hurl を内部で使っているとは書いてない。JetBrains 製品は Java で書かれてるから多分別物だろう。