それcur
ウノウラボ Unoh Labs: ウェブアプリ開発を助けるGETコマンドを使ってハックしてみよう!!
でも個人的にcurlを使うことが多いのでこの機会にまとめながらメモ
■インストール
FreeBSDなら
/usr/ports/ftp/curl
あたりから
■ヘルプ
いっぱーい。
自分がよく使うものは
ここらへんにまとめ。
■普通にGET
'-#' は変な進捗状況を表示したくないのでプログレスバーにしているだけ・・。
あれって消せないのかなぁ。
■APIをGETで叩く
RESTなAPIならそのまま叩くだけ。
■レスポンスヘッダを見てみる
フォト蔵さんはPHP4なのだすなー。
■やり取りを詳しく!
■APIをPOSTで叩いて怒られてみる
フォト蔵さんのphoto_list_public API はなにやらGETのみ対応らしいので
-d オプションを使って POST で叩いて怒られてみよう
■ほんとにPOSTか詳しく見てみる
うむ、やっぱりPOSTで叩いてるっぽい。
どっちも対応してるのかな。
GETコマンドはしらなんだー。さてウェブアプリケーションの開発をしていると当然ですがブラウザーで画面の確認をしたりしますが,ブラウザーで確認をしているとキャッシュに悩んだり面倒くさいことが少なくありません.普通そういう時はtelnetなどで直接HTTPプロトコルでウェブサーバーと会話するわけですが面倒くさいですよね.
jokagiは何年か前に偶然見つけたGETというコマンド(HEADもよく使う)を使用していますので,このコマンドの紹介と超簡単なハックをひとつ紹介したいと思います.
でも個人的にcurlを使うことが多いのでこの機会にまとめながらメモ
■インストール
FreeBSDなら
/usr/ports/ftp/curl
あたりから
■ヘルプ
$ curl --help
いっぱーい。
自分がよく使うものは
ここらへんにまとめ。
■普通にGET
$ curl '-#' 'http://www.yahoo.co.jp/' | head <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <!--京--> <title>Yahoo! JAPAN</title> <meta name="description" content="日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。"> <style type="text/css" media="all"> <!-- .spacer { line-height: 110%; } .spacer1 {line-height: 115%; }
'-#' は変な進捗状況を表示したくないのでプログレスバーにしているだけ・・。
あれって消せないのかなぁ。
■APIをGETで叩く
$ curl '-#' 'http://api.photozou.jp/rest/photo_list_public?type=album&user_id=98953&album_id=224030' | head <?xml version="1.0" encoding="UTF-8" ?> <rsp stat="ok"> <info> <photo> <photo_id>2298762</photo_id> <user_id>98953</user_id> <album_id>224030</album_id> <type>jpg</type> <width>450</width> <height>337</height> ######################################################################## 100.0%%
RESTなAPIならそのまま叩くだけ。
■レスポンスヘッダを見てみる
$ curl -I 'http://api.photozou.jp/rest/photo_list_public?type=album&user_id=98953&album_id=224030' HTTP/1.1 200 OK Date: Thu, 15 Feb 2007 16:20:59 GMT Server: Apache X-Powered-By: PHP/4.3.11 Content-Type: text/xml; charset=UTF-8
フォト蔵さんはPHP4なのだすなー。
■やり取りを詳しく!
$ curl '-#' -v 'http://api.photozou.jp/rest/photo_list_public?type=album&user_id=98953&album_id=224030' | head * About to connect() to api.photozou.jp port 80 (#0) * Trying 124.32.224.107... connected * Connected to api.photozou.jp (124.32.224.107) port 80 (#0) > GET /rest/photo_list_public?type=album&user_id=98953&album_id=224030 HTTP/1.1 > User-Agent: curl/7.16.0 (i386-portbld-freebsd6.0) libcurl/7.16.0 OpenSSL/0.9.7e zlib/1.2.2 > Host: api.photozou.jp > Accept: */* > < HTTP/1.1 200 OK < Date: Thu, 15 Feb 2007 16:56:09 GMT < Server: Apache < X-Powered-By: PHP/4.3.11 < Content-Type: text/xml; charset=UTF-8 < Transfer-Encoding: chunked { [data not shown] <?xml version="1.0" encoding="UTF-8" ?> <rsp stat="ok"> <info> <photo> <photo_id>2298762</photo_id> <user_id>98953</user_id> <album_id>224030</album_id> <type>jpg</type> <width>450</width> <height>337</height> ######################################################################## 100.0%%個人的にこれが激しく便利。
■APIをPOSTで叩いて怒られてみる
フォト蔵さんのphoto_list_public API はなにやらGETのみ対応らしいので
-d オプションを使って POST で叩いて怒られてみよう
$ curl '-#' 'http://api.photozou.jp/rest/photo_list_public' -d 'type=album&user_id=98953&album_id=224030' | head <?xml version="1.0" encoding="UTF-8" ?> <rsp stat="ok"> <info> <photo> <photo_id>2298762</photo_id> <user_id>98953</user_id> <album_id>224030</album_id> <type>jpg</type> <width>450</width> <height>337</height>あれ、、怒られるかと思ったけど大丈夫みたい。
■ほんとにPOSTか詳しく見てみる
$ curl '-#' -v 'http://api.photozou.jp/rest/photo_list_public' -d 'type=album&user_id=98953&album_id=224030' | head * About to connect() to api.photozou.jp port 80 (#0) * Trying 124.32.224.107... connected * Connected to api.photozou.jp (124.32.224.107) port 80 (#0) > POST /rest/photo_list_public HTTP/1.1 > User-Agent: curl/7.16.0 (i386-portbld-freebsd6.0) libcurl/7.16.0 OpenSSL/0.9.7e zlib/1.2.2 > Host: api.photozou.jp > Accept: */* > Content-Length: 40 > Content-Type: application/x-www-form-urlencoded > } [data not shown] < HTTP/1.1 200 OK < Date: Thu, 15 Feb 2007 17:01:23 GMT < Server: Apache < X-Powered-By: PHP/4.3.11 < Content-Type: text/xml; charset=UTF-8 < Transfer-Encoding: chunked { [data not shown] <?xml version="1.0" encoding="UTF-8" ?> <rsp stat="ok"> <info> <photo> <photo_id>2298762</photo_id> <user_id>98953</user_id> <album_id>224030</album_id> <type>jpg</type> <width>450</width> <height>337</height>
うむ、やっぱりPOSTで叩いてるっぽい。
どっちも対応してるのかな。