interprism's blog

インタープリズム株式会社の開発者ブログです。

curl をたまにしか使わなくて使い方が憶えられない人は httpie を使うといいかも

この投稿は インタープリズムの面々が、普段の業務に役立つ記事を丹精込めて書き上げる! Advent Calendar 2016 - Qiitaの7日目 の記事です。

hiranoです。私はCUIのコマンドが好きです。 起動しておく必要がないし、使おうと思ったらどこでも使えるので。

CUIライフを豊かにしてくれるかもしれない いい感じにhttpリクエストを投げられて、いい感じに結果を表示してくれるhttpie を紹介します。

curl というものがある

httpie を紹介する前に curl の紹介です。 CUIでhttpリクエストを投げる有名なコマンドにcurlがあります。 (余談ですがカールって読むみたいです)

私はこれ使いこなせてません。なぜならヘッダ追加したりPOST投げたりする時のやり方が憶えられない。

例えばこんなの。

# POSTでリクエストを投げる
curl -X POST httpbin.org/post

# POSTでFORMデータを含めて投げる
curl -X POST -d firstname=hoge -d lastname=hogege httpbin.org/post

# POSTでJSONデータを投げる
curl -X POST -H "Content-type: application/json" -d '{"firstname":"hoge","last_name":"hogege","hobbies":["reading","walking"]}' httpbin.org/post

# ヘッダを追加して投げる
curl -H 'hkey1:value1' -H 'hkey2:value2' httpbin.org/get

# レスポンスヘッダーも表示
curl -i httpbin.org/get

# basic認証
curl --user myuser:mypassword httpbin.org/basic-auth/myuser/mypassword

# gzip圧縮された結果を表示 → 一度ダウンロードして展開するしかなさそう
curl httpbin.org/gzip > test.gz
gzip -d test.gz
cat test

個人的には X ってなんだよ d とか H ってなんだよ。う、あ、頭が…

httpbin (閑話休題

と、サラッと httpbin を使っていますが、これ非常に便利です。 一言で言えば

自分で色々と用意しなくても色々なリクエストを試すことが出来るサイト

です。 トップページにアクセスすると、対応しているリクエストがずらーっと表示されるので大体分かると思います。

httpbin(1): HTTP Client Testing Service

httpie というものがある

真打ちの登場です。インストール方法は公式を見てください。

httpie.org

Mac,Linux,Windowsで使えるらしいです)

httpie を使うと先の例が以下のようになります。

# POSTでリクエストを投げる
http POST httpbin.org/post

# POSTでデータを含めて投げる
http --form POST httpbin.org/post firstname=hoge lastname=hogege

# POSTでJSONデータを投げる
http POST httpbin.org/post firstname=hoge lastname=hogege hobbies:='["reading","walking"]'

# ヘッダを追加して投げる
http httpbin.org/get hkey1:value1 hkey2:value2

# レスポンスヘッダーも表示 → デフォルトで表示されるので特にオプションは不要
http httpbin.org/get

# basic認証
http -a myuser:mypassword httpbin.org/basic-auth/myuser/mypassword

# gzip圧縮された結果を表示 → デフォルトでgzipに対応しているので勝手に展開される
http httpbin.org/gzip

全体的にオプションが少なめで、書き方に統一感が感じられます。

また、出力結果が明らかに違います。

curl

f:id:interprism:20161229181121p:plain

httpie

f:id:interprism:20161230002152p:plain

まとめ

httpie の利点を改めて列挙すると以下のような感じです。

  • 書き方のルールを導入することで、Methodの指定にオプションが不要
  • header, form(json) を送る時に区切り文字を : , = のどちらかにすればよくオプションが不要
  • JSONをサポートしているのでシンプルなJSONならデータだけ渡せばOK
  • 実行結果が人間が読むのに適している

ほぼ curl と同じ機能を持ち、使いやすさが向上している感じです。 サーバーで操作する際は curl しか使えない時はありますが、そうでない限りは httpie を使うと色々と良さそうです。

みなさんのCUIライフに幸あれ。

参考にさせていただいたサイト

curlhttpie の違いについて非常によくまとまっていて、より深く使いたい人はこちらが良いと思います。

d.hatena.ne.jp

インタープリズムの面々が、普段の業務に役立つ記事を丹精込めて書き上げる! Advent Calendar 2016 - Qiita8日目の記事

PAGE TOP