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している。