Perlクックブック Volume 2
- 作者: トムクリスチャンセン,ネイザントーキントン,Tom Christiansen,Nathan Torkington,Shibuya Perl Mongers,ドキュメントシステム
- 出版社/メーカー: オライリージャパン
- 発売日: 2004/09
- メディア: 単行本
- 購入: 2人 クリック: 38回
- この商品を含むブログ (40件) を見る
あとDNSの参照、POP3を使ったメールの受信、SMTPを使ったメールの送信、それぞれの添付ファイルの扱い方、FTPクライアントの使い方etc etc。
で、RESTについては記述がなかったのでYahooデベロッパーネットワークとかちょっと見てみると・・・ リクエストする時は、URLの組み立てで、CGIにパラメータ渡すのと大差ない。というか同じ? サンプルのコードを見ると・・・
my $base_url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch"; my $type = "all"; #alternates: any, phrase. my $results = 50; my $language = "ja"; my $results_sort = "rank"; #alternate: date. my $req_url = "$base_url?appid=$appID&query=$query&results=$results"; $req_url .= "&language=$language&sort=$results_sort"; # Make the request my $yahoo_response = get($req_url);
同じだよw 使っているのは文字列の操作とLWP::Simple::getだけだ。こんなURLの組み立てとgetなんてとっくのとうに理解してるっつーの! でも、もどってくるのはXMLになっていて、続くコードはこんな感じ。
# Parse the XML my $xmlsimple = XML::Simple->new(); my $yahoo_xml = $xmlsimple->XMLin($yahoo_response, ForceArray=>['Result']); # Set some variables my $out; my $result_count = 0; # Add the column header my $totalresult = $yahoo_xml->{totalResultsAvailable}; #top link $out .= "Search again
\n
\n"; $out .= "result : $totalresult
\n"; # Loop through the items returned foreach my $result (@{$yahoo_xml->{Result}}) { #ごにょごにょ }
ふーむ。
なんというか、SOAPより簡単にリクエストを投げられるのはいいかも。でも情報通信の階層モデルって考えでこれを見てみると、非対称で美しくない。SOAPはHTTPの上層に、同じフォーマット(XML)でサービスとデータ構造を定義していて対称なモデルになっていると思う。それにRESTだって結果はXMLで返ってくるんだから、いくらリクエストを簡単に書けたって、結局XMLのパージングは必要じゃないか。まあ、タグを頼りに文字列の部分切り出しで値を取り出すこともできるけどさ。でもなんつーかそれは、「正しさ」や「美しさ」がないじゃないか。
「正しさ」よりも「美しさ」よりも「使える」事が重要ではあるけど、「使える」事にさらに「正しさ」と「美しさ」を添えるべきだと思う。「正しさ」と「美しさ」はあるけど、「使えない」ものは、一篇の詩みたいなもんだろうねw 読む人が読めば感動を与えるけど、それでゴハンは食べれませんよと。