curl/httpie 比較チートシート
http://yuroyoro.hatenablog.com/entry/2013/04/02/190709
httpie
インストールが必要になってしまいますが
httpのレスポンスを整形したいだけであればhttpieも便利です。
https://github.com/jkbr/httpie
pip install httpie
jsonコンテンツだけでなくhtmlやヘッダー情報などもカラーリングしてくれるので
だいぶ見やすくなります。
curl / httpie 比較表
説明 | curl | httpie |
---|---|---|
整形しないで表示 | (default) | http --pretty=none example.com |
'レスポンスヘッダ+body'表示 | curl -i example.com | http example.com |
'ヘッダーのみ'表示 | curl -I example.com | http -h example.com |
'body'のみ表示 | curl example.com | http -b example.com |
'リクエストヘッダ+レスポンスヘッダ+body'表示 | curl -v example.com | http -v example.com |
ファイル出力 | curl -o index.html example.com | http example.com > index.txt*1 |
Basic認証 | curl -u user:pass example.com | http -a user:pass example.org |
ヘッダー書き換え | curl -H 'User-Agent:Bacon/1.0' -H 'Cookie:valued-visitor=yes' -H 'X-Foo:Bar Referer:http://httpie.org/' example.com*2 | http example.com User-Agent:Bacon/1.0 Cookie:valued-visitor=yes X-Foo:Bar Referer:http://httpie.org/ |
Cookie付ける | curl -b 'valued-visitor=yes' example.com | http example.com Cookie:valued-visitor=yes |
Proxy | curl --proxy=10.10.1.10:3128 example.com | http --proxy=http:10.10.1.10:3128 example.com*3 |
メソッド指定 | curl -X PUT example.com | http PUT example.com |
POSTフォームデータ | curl -X POST -d uid=xxx -d key=yyy example.com | http -f POST example.com uid=xxx key=yyy |
タイムアウト | curl --max-time 5 example.com | http --timeout 5 example.com |
トレース | curl --trace trace.log example.com | - |
redirect先に再接続 | curl -L example.com | http --follow example.com |
SSL警告無視 | curl -k https://example.com/ | http --verify no https://example.com/ |
※ここにあるのはあくまで一例で
同じ事をするにも様々な書き方が存在します。
httpieの使用上の注意点など
基本的には以下のようなフォーマットとなります。
http <option> [METHOD] URL [REQUEST ITEM [REQUEST ITEM ...]]
ここで注意しておきたいのが、
[METHOD] [URL] [REQUEST ITEM]
という並びを変えてはいけないということです。
これを守っておけば比較的ハマることはないかと思います。
# フォーマット間にオプション付けたら駄目 http POST -v example.com hoge=fuga # これも駄目 http POST example.com -v hoge=fuga # 前と後ろならOK http -v POST example.com hoge=fuga http POST example.com hoge=fuga -v
httpieの便利機能
セッション
sessionオプションでヘッダ情報を保持できます。
# 「toritsuyo1」というセッション名で保持 http --session=toritsuyo1 -a toritori:himitsu https://ninsho.site/ User-Agent:Bacon/1.0 Cookie:valued-visitor=yes # Basic認証情報/ユーザエージェント/Cookieなどを引き継げる http --session=toritsuyo1 https://ninsho.site/
まとめ
自分の場合ですが
単純なGETやPOSTのヘッダやコンテンツを確認したいのならhttpieを、
詳細なトレースを取ったりプロファイルする時にはcurlを使っています。
そのような感じで
「curl から httpieに完全に移行する」ということではなく
用途によって使い分けるのがベストではないでしょうか。
合わせて読みたい
オマケ
完全に蛇足ですが、jqコマンドに似たjtコマンドというのもあるようです。
普段perl使っている人はこちらもオススメ。
http://search.cpan.org/dist/App-jt/bin/jt