シンプルなWEB APIインターフェースをPerlで作る
2019/06/04 19:00
category:Perl
極力シンプルな形で、HTTPを使ったAPIでデータをやりとりをする方法を考えます。
出力側ソース
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
my $data = {
'key1' => '123',
'key2' => 'abc',
'key3' => 'あいう',
};
print "Content-Type: application/json; charset=UTF-8\n\n";
print JSON->new->utf8(0)->encode($data);
exit;
jsonモジュールを使って、json形式でそのまま出力させます。
無名ハッシュをエンコードして渡しています。
curlで叩いた出力
$ curl http://127.0.0.1/test/output.cgi
{"key2":"abc","key1":"123","key3":"あいう"}
問題ないですね。
入力側ソース
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON;
use Encode;
my $url = "http://127.0.0.1/test/output.cgi";
my $request = HTTP::Request->new(GET => $url );
my $ua = LWP::UserAgent->new;
$request->header("Content-Type" => "application/json");
my $response = $ua->request($request);
if ( $response->is_success ) {
my $json = JSON->new->decode($response->content);
for my $key (keys %$json) {
print "$key > $$json{$key}\n";
}
}
LWP::UserAgentモジュールをつかってリクエストし、受信データをjsonでデコードします。
実行結果
$ ./input.pl
key2 > abc
key1 > 123
key3 > あいう
エラー処理とかは全く考慮してないですが、今の自分の知識ではこんなもんですね。