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

AtomPP を利用したWeb API

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

AtomPPをPerlから使う


   それでは実際にAtomPPを利用したプログラムを書いてみることにしましょう。PerlにはXML::AtomというAtomPPやAtom Feedを扱うモジュールがあるので、こちらを利用します。

   題材としては、はてなブックマーク(注3)を利用してみます。はてなブックマークはソーシャルブックマークサービスで、ブックマークの登録や取得、編集をAtomPPで行うことができます。

   今回は自分のブックマークに新規のエントリを登録するプログラムを書いてみました(リスト18)。

リスト18:はてなブックマークにポストする
#!/usr/bin/perl
use strict;
use warnings;
use XML::Atom::Client;
use XML::Atom::Entry;
use XML::Atom::Link;

my $api = XML::Atom::Client->new;
$api->username('ユーザー名');
$api->password('パスワード');

my $collection_uri = 'http://b.hatena.ne.jp/atom/post';
my $uri = '登録するエントリのURI';
my $comment = 'コメント';

my $link = XML::Atom::Link->new;
$link->type('text/html');
$link->rel('related');
$link->href($uri);
my $entry = XML::Atom::Entry->new;
$entry->add_link($link);
$entry->add(undef,'summary',$comment,{type => 'text/plain'});
my $member_uri = $api->createEntry($collection_uri, $entry);

my $posted_entry = $api->getEntry($member_uri);
print $posted_entry->as_xml;

   処理としては簡単で、XML::Atom::Entryのインスタンスとして登録情報を作成し、それをXML::Atom::Clientを使って登録(新規エントリの作成)しているだけです。はてなブックマークのAPIでは、登録するエントリのURIはlink要素として指定するので、XML::Atom::Entryを使って生成し、それをエントリオブジェクトに加えています。コメントはsummary要素として渡します。

   実際に追加する作業は、XML::Atom::ClientクラスのcreateEntryメソッドに追加先のCollectionのURI(PostURI)とエントリを渡せば完了です。登録の際に送られるEntryのデータは次ページのリスト19のようなものです。

リスト19:POSTされるエントリ情報
POSTされるエントリ情報
(画像をクリックすると別ウィンドウに拡大図を表示します)

   エントリを追加すると、レスポンスとして、追加されたMemberのURIが返されます。そこで、今度はそのURIに対してGETメソッドでアクセスして(getEntryを利用)、エントリの内容を取得します。内容はXML::Atom::Entryとして返されるので、最後にそれをXMLのまま表示しています。その内容は、次ページのリスト20のようなものになっているはずです。

リスト20:取得したエントリ情報
取得したエントリ情報
(画像をクリックすると別ウィンドウに拡大図を表示します)

   ちなみに、はてなブックマークではユーザー認証にWSSE認証という仕組みを利用していますが、XML::Atomにはその仕組みが用意されているので、特に気にすることなく利用できます。

   はてなブックマークのAtomPP APIの仕様については以下のドキュメントを参照してください。


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

連載バックナンバー

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

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

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

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

AtomPP を利用したWeb API | Think IT(シンクイット)

Think IT(シンクイット)

サイトに予期せぬエラーが起こりました。しばらくたってから再度お試しください。