キモブロ

Please spy check please, Fucking retard

HTTPクライアントのhttpieを使ってみる

curlよりも直感的なhttpclientとのことで、早速これを試しに使ってみる。
https://github.com/jkbr/httpie

インストール

まずpipというpythonのパッケージ管理ツールが必要らしい。ということでpipを入れます

sudo yum install python-pip
sudo easy_install pip 

次にhttpie本体を入れます

sudo pip install httpie 

するとhttpコマンドがインストールされます。

使ってみる

まずはとりあえずhttpie.orgのサイトに向かって使ってみます

$ http httpie.org
HTTP/1.1 302 Found
Date: Fri, 20 Jul 2012 15:04:47 GMT
Server: Apache
X-Awesome: Thanks for trying HTTPie :)
Location: https://github.com/jkbr/httpie
Cache-Control: max-age=1800
Expires: Fri, 20 Jul 2012 15:34:47 GMT
Content-Length: 214
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://github.com/jkbr/httpie">here</a>.</p>
</body></html>

X-Awesomeというヘッダーが洒落が効いていてオシャレである
何が便利かというと、POSTしたりするときのパラメーターを簡単に指定できることっぽい

$ http POST key=value key2=value2

みたいな感じで。


もっと便利なのは
key:valueとすると、その部分はHTTP Headerとして送信されて、
key=valueとか、key:=valueとすると、JSONでcontent-bodyとして送信される

試しにやってみる -v つけるとrequestのヘッダーとデータが見れるのでそれも使う

$ http -v POST httpie.org key:value
POST / HTTP/1.1
key: value
Host: httpie.org
Accept-Encoding: identity, deflate, compress, gzip
Accept: */*
User-Agent: HTTPie/0.2.5
... 省略

key:valueってのがヘッダーに追加されてるのが確認できる。

次、普通のkey=value

$ http -v POST httpie.org key=value                                               
POST / HTTP/1.1
Host: httpie.org
Content-Type: application/json; charset=utf-8
Accept-Encoding: identity, deflate, compress, gzip
Accept: application/json
User-Agent: HTTPie/0.2.5

{
    "key": "value"
}

今度はheaderではなくbodyで、そしてJSONになってますね。


さらに-fオプションを付けることでJSONではなくて普通のPOSTっぽい感じになるらしい。やってみる

$ http -f -v POST httpie.org key=value                                            
POST / HTTP/1.1
Host: httpie.org
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Accept-Encoding: identity, deflate, compress, gzip
Accept: */*
User-Agent: HTTPie/0.2.5

key=value

なりました。



あとはpipeにも対応してて、標準入力で受け取ったものをWEBサイトにPOSTしたりとかも出来るっぽい。こんな感じで。

$ http -b GET https://api.github.com/repos/jkbr/httpie | http POST httpbin.org/post

これはHTTP GETした結果のデータをhttpbin.org/postってURLにPOSTしている。

感想

curl使えばいいやって感じではあるけどcurlのオプションはしょっちゅう忘れるし、これなら-vオプションつけるだけでrequestもresponseもどっちもデータ見ることできてラクチンだなーって思った。デメリットも特にないしできればこれにシフトしていきたい。ただpython使いじゃないので環境構築されてない場合が多くてそのへんがだるいかなー