サンプルアプリケーションを動かしてみよう
さて、
- URIモジュールでリクエストURIの構築
- LWP::UserAgent モジュールでURI へのリクエスト/
レスポンスの取得 - JSONモジュールでレスポンスコンテンツのパース
これらの流れを追えばTwitter Search APIを使ったアプリケーションの構築が可能です。Twitter Search APIを利用したシンプルなアプリケーションとして、
use LWP::UserAgent;
use URI;
use JSON qw(decode_json);
use Encode qw(encode_utf8);
use utf8;
my $query = 'おはよう';
my $uri =
URI->new('http://search.twitter.com/search.json');
my $params = {
q => $query,
result_type => 'recent',
};
$uri->query_form(%$params);
my $ua = LWP::UserAgent->new;
my $res = $ua->get($uri);
die "Error: ". $res->status_line if $res->is_error;
my $json = $res->content;
my $ref = decode_json($json);
for my $tweet ( @{ $ref->{results} } ) {
print
encode_utf8("\@$tweet->{from_user}: $tweet->{text}\n");
}
今までの組み合わせだけでできましたね。
クエリやパースのしかたを工夫したり、
さらに楽をしたい人は……
さて、
ただ、
WebService::Simpleモジュール
手前味噌になってしまいますが、
何度も言いますが、
(1) リクエストURIを構築する(2) Web APIにリクエストする(3) 結果をパースする
という作業がつきまといます。筆者はこの作業を毎度行うのに疲れてしまったので、
たとえばTwitter Search APIを利用するサンプルコードは次のようになります。
use WebService::Simple;
use Data::Dumper;
use utf8;
my $query = 'おはよう';
my $service = WebService::Simple->new(
base_url => 'http://search.twitter.com/search.json', …(1)
response_parser => 'JSON', …(2)
);
my $res = $service->get( { q => $query }); …(3)
my $json = $res->parse_response();
print Dumper $json;
ここでは最低限必要な次の情報だけを渡しつつ、
(1) ベースとなるリクエストURI(2) パーサオブジェクト(3) クエリパラメータ
使い方は、
WebService::Simpleでは、
筆者がWeb APIを触るときにはWebService::Simpleをよく使いますし、
まとめ
以上、
さて、