RESTなWebサービスをPHPで操作する

2010年1月19日(火)
藤本 壱

ブックマーク追加の手順

AtomAPIでは、情報を新たに追加する際には、POSTプロトコルでWebサーバーにアクセスし、追加する情報を渡します。

はてなブックマークでは、「http://b.hatena.ne.jp/atom/post」というアドレスにアクセスし、リスト2のようなXMLのデータを渡すと、ブックマークを追加することができます。
--------------------------------------------------------------------------------
【リスト2】 ブックマークの追加に使うXML

     ダミーのタイトル
     
     

コメント

--------------------------------------------------------------------------------

また、通信が正常に終了した場合、Webサービスからクライアントに対して、通信結果の情報が送信されてきます。その中には、追加した情報に対応する編集用のアドレスが含まれています。後で情報の編集や削除を行う際には、そのアドレスが必要になります。

はてなブックマークの場合、通信が正常終了すると、リスト3のようなXML形式のデータが返されます。この6行目にある「atom/edit/ページのID」が、編集用のアドレスになります。
--------------------------------------------------------------------------------
【リスト3】 通信の結果


     ブックマークしたページのタイトル
     
     
     
     
          ユーザー名
     

     Hatena::Bookmark
     
     tag:hatena.ne.jp,2005:bookmark-ユーザー名-ページのID
     

コメント

--------------------------------------------------------------------------------

ブックマークを追加するプログラム

はてなブックマークにAtomAPI(AtomPub)でアクセスし、ブックマークを追加するプログラムを作ると、リスト4のようになります。
--------------------------------------------------------------------------------
【リスト4】 ブックマークを追加するプログラム
require_once 'HTTP/Request.php';
require_once 'auth_wsse.php';

$bookmark_url = 'ブックマークするページのアドレス';
$comment = 'コメント';

$req =& new HTTP_Request('http://b.hatena.ne.jp/atom/post');
$req->setMethod(HTTP_REQUEST_METHOD_POST);
set_auth_wsse($req);
$postdata =
     dummy
     
     

${comment}

HERE;
$req->addRawPostData($postdata);
if (PEAR::isError($req->sendRequest())) {
     exit('通信エラーが発生しました');
}
$code = $req->getResponseCode();
if ($code == 201) {
     print "ブックマークを追加しました";
     $resp = trim($req->getResponseBody());
     $xml = new SimpleXMLElement($resp);
     $links = $xml->link;
     foreach ($links as $link) {
          if ($link['rel'] == 'service.edit') {
               print "編集用のアドレス" . $link['href'] . "\n";
          }
     }
}
else {
     print "エラーが発生しました:コード = ${code}\n";
}
?>
--------------------------------------------------------------------------------

このプログラムと、1ページ目で作った「auth_wsse.php」ファイルを、同じディレクトリ(フォルダ)に入れます。また、5行目の「ブックマークするページのアドレス」と、6行目の「コメント」を、実際のアドレスやコメントに適宜書き換えます。

8行目と9行目で、「http://b.hatena.ne.jp/atom/post」にPOSTプロトコルで接続するようにしています。そして、処理が成功したら、結果のXMLから「atom/edit/ページのID」の部分を抜き出し、「編集用のアドレス:atom/edit/ページのID」のように表示します。

このプログラムを実行した後に、はてなブックマークにログインすると、ブックマークが追加されていることが分かります。

例えば、ブックマークするページのアドレスを「http://thinkit.jp/article/1057/1/」(Think ITの「データベースの運用と管理の基本(1/3)」という記事)にし、またコメントを「データベース基礎中の基礎」にして、プログラムを実行するとします。

その後にはてなブックマークにログインすると、実際にブックマークが追加され、コメントも投稿されていることが分かります(図2)。

次ページでは、これまで説明してきた新規ブックマークの追加に加え、PUTプロトコルを用いて既存のブックマークを編集するやり方について解説します。

1969年生まれ。神戸大学工学部電子工学科卒。ソフトメーカー勤務後、フリーライターとして独立。現在では、パソコン関係およびマネー関係の書籍を中心に執筆活動を行っている。ブログ「The blog of H.Fujimoto」は、Movable TypeやWordPressの情報を中心に毎日更新している(http://www.h-fj.com/blog/)。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

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