YAPC::Asia 2008 Lightning Talks
yusukebe / wadit Inc.POX て何だという話をちょっと前に書きましたが。yohei さん曰く、いわゆる "GET で XML 返し" してるだけで REST みたいな、誤用されてる API のアーキテクチャ(?)は "POX over HTTP" と呼べばよいとのこと。
Yahoo Google YouTube flickr Amazon lingr 楽天 CarSensor 価格.com HotPepper 食べログ.com ...
use WebService::Simple;
use Data::Dumper;
my $flickr = WebService::Simple->new(
base_url => "http://api.flickr.com/services/rest/",
param => { api_key => "your_api_key", }
);
my $response =
$flickr->get( { method => "flickr.test.echo", name => "value" } );
my $ref = $response->parse_response;
print Dumper $ref;
Some CPAN modules
I wrote the same code often
So I make
WebService::Simple
Interface to any(?)
WebService APIs
use WebService::Simple;
my $flickr = WebService::Simple->new(
base_url => "http://api.flickr.com/services/rest/",
param => { api_key => "your_api_key", }
);
my $response = $flickr->get(
{
method => "flickr.photos.search",
text => "cat",
}
);
# $ref is hash ref # parsed with XML::Simple my $ref = $response->parse_response;
Other features
my $cache = Cache::File->new(
cache_root => '/tmp/mycache',
default_expires => '30 min',
);
my $flickr = WebService::Simple->new(
base_url => "http://api.flickr.com/services/rest/",
cache => $cache,
param => { api_key => "your_api_key, },
);
my $flickr = WebService::Simple->new(
base_url => "http://api.flickr.com/services/rest/",
response_parser => 'JSON',
params => { api_key => "your_api_key", format => "json" }
);
package WebService::Simple::Flickr;
use base qw(WebService::Simple);
__PACKAGE__->config( base_url => "http://api.flickr.com/services/rest/", );
sub photos_search {
my ( $self, $str ) = @_;
return $self->get(
{
method => "flickr.photos.search",
text => $str
}
);
}
use WebService::Simple::Flickr;
my $flickr =
WebService::Simple::Flickr->new(
param => { api_key => "your_api_key", } );
my $ref = $flickr->photos_search("cat")->parse_response;
Development at CodeRepos



thanks to
lestrrat and tokuhirom
Conclusion
If interest in WebService::Simple, please use it.
CodeRepos ++;
thanks!!