PR
連載 [第5回] :
  PerlでWeb APIを使いたおす

AtomPP を利用したWeb API

2006年10月12日(木)
水野 貴明

そのほかのWeb API-ECSの場合


   ここまでいくつかのWeb APIの標準的な仕様を紹介してきました。しかし、これらの標準的な仕様を利用していないWeb APIもたくさんあります。例えば、広義のRESTとして紹介した、HTTPを利用してXMLをやり取りするだけの「XML on HTTP」とも呼ばれるAPIなどです。

   ここでそのいくつかを紹介しておきましょう。まずは、これまでも例に登場した、Amazonの提供するECSです。これはAmazonの商品情報を取得したり、ショッピングカートを操作できるAPIで、SOAPと(広義の)RESTのインターフェイスが用意されています。

   ECSにおけるRESTインターフェイスでは、エントリポイントとなるURLが用意され、パラメータを全てクエリ文字列としてそこに渡してアクセスすると、結果がXMLで取得できます。例えば、ItemLookupという、ASINコード(Amazonの商品管理コードで、書籍はISBNコードと同じ)で指定した商品の情報を取得するオペレーションを利用した場合のURLと、その結果をリスト21に示します。


リスト21:ECSでのリクエストとレスポンス
ECSでのリクエストとレスポンス
(画像をクリックすると別ウィンドウに拡大図を表示します)

   このような、URLにパラメータを渡して単純なXMLデータを受け取るタイプのAPIは、アクセスするのも、そしてAPIを公開するのも比較的簡単なので、多く利用されています。

   例えばECSへアクセスしてISBNコードから書籍名を取得するためのコードはリスト22のようになるでしょう。

リスト22:ECSで書籍名を取得するサンプル
ECSで書籍名を取得するサンプル
(画像をクリックすると別ウィンドウに拡大図を表示します)

   アクセスの際には必要な情報にあわせてURLを生成してデータを取得し、それを適当なXMLパーサー(ここではXML::Simpleを利用しています)に渡して中身を取り出せばいいだけです。なお、AWSAccessKeyIdに渡す値は20桁のAPI Keyで、あらかじめECSのサイトにアクセスして取得する必要があります。

   APIを公開する側にとってもこうしたシンプルな仕様は便利です。なぜならクエリ文字列で渡ってきたパラメータを解析して、それに応じてシンプルなデータを返せばいいからです。例えばXML-RPCのところでも作成した、2つの数字を受け取って足し算をして返すAPIを考えてみます。数字をURL中にnum1とnum2という名前をつけたクエリ文字列として埋め込んで渡してもらい、返すのは以下のようなシンプルなXMLです。

<?xml version="1.0"?>
<sumResult>
  <value>130</value>
</sumResult>

   こんなAPIならリスト23のような簡単なプログラムで実現できます。

リスト23:計算を行うAPIプログラム
#!/usr/bin/perl
use strict;
use warnings;
use CGI;

my $cgi = CGI->new;
my $num1 = $cgi->param('num1');
my $num2 = $cgi->param('num2');
my $result = $num1 + $num2;
my $response = <<"END";
Content-type: text/xml

<?xml version="1.0"?>
<sumResult>
  <value>$result</value>
</sumResult>
END

print $response;

   標準モジュールのCGI.pmを使ってクエリ文字列を取り出したら、後は計算をして、XMLとして出力します。その作業は単にすでに用意したXMLのテンプレートに数値を埋め込むだけの簡単なものです。自分で作ったオリジナルのXMLデータなので、別にXMLを出力するからといって構えることは何もないのです。

1973年東京生まれ。エンジニア兼技術系ライター。株式会社はてな勤務。近著に「俺流Amazonの作り方」(アスキー)、「詳解RSS〜RSSを利用したサービスの理論と実践」(ディー・アート)など。趣味はラテン音楽と海外旅行と神輿。現在、家を荒らしまわるネズミの被害に頭を悩ませている。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています