Rhythm & Biology

Engineering, Science, et al.

perlでhttp client

webアプリの開発をするようになって、テスト用にHTTP Clientを書くことが多くなりました。とは言え、まだまだwebの知識が無いため、モジュールの力を借りてゴリゴリ書いています。

まずはGET METHOD。

use HTTP::Request::Common qw/GET/;
use LWP::UserAgent;

my $url = "http://www.google.com/";
my $req = GET($url);
my $ua = LWP::UserAgent->new;                                               
my $res = $ua->request($req);
if ($res->is_success) {
  print $res->decoded_content;
}

モジュールのおかげで、直感的に分かりやすいコードになっています。これをPOST METHODに修正するのも簡単で、

use HTTP::Request::Common qw/POST/;
use LWP::UserAgent;

my $url = "http://***/";
my $query = [ id => "0123", name => "mythosil" ];
my $req = POST($url, $query);
my $ua = LWP::UserAgent->new;                                               
my $res = $ua->request($req);
if ($res->is_success) {
  print $res->decoded_content;
}

となります。クエリの部分($query)はハッシュリファレンスで渡せば、内部でうまいこと書き換えてくれます。

これ以外にもいろんな書き方がありますが、個人的にはこういう書き方で統一しています。