В феврале этого года O’Reilly издало книгу «RESTful Web Services Cookbook», и в этой связи есть смысл упомянуть модуль, который появился на спане в начале прошлого года, а сегодня обновился, — REST::Client, который, возможно будет в чем-то удобнее традиционных LWP et. al.
Использование весьма прямолинейно (хотя и не без странностей): названия методов REST::Client совпадают с именами методов HTTP-протокола: GET, PUT, POST, DELETE, OPTIONS, HEAD.
use v5.10;
use strict;
use REST::Client;
my $client = new REST::Client;
$client->OPTIONS('http://onperl.ru/');
say $client->responseCode();
say $client->responseContent();
$client->HEAD('http://onperl.ru/');
say $client->responseCode();
$client->GET('http://onperl.ru/');
say $client->responseCode();
Дополнительно имеется возможность использовать SSL, и, что интересно, создать для полученного XML-ответа XPath-контекст.
Вот пример того, как переписать скрипт, получающий курс для любой пары валют, с использованием модуля REST::Client, и с честным разбором XML.
#!/usr/bin/perl
use v5.10;
use strict;
use REST::Client;
my ($from, $to) = map {uc} @ARGV;
unless ($from) {
say "Usage: rate FROM [TO]\n";
exit;
}
$to //= 'RUB';
my $client = new REST::Client;
$client->GET("http://whoyougle.com/money/api/$from/$to");
say $client
->responseXpath
->findvalue('/currency/rate/value/text()');
Проверка:
$ ./rate usd
29.2416
$ ./rate eur usd
1.3393
Комментировать