Web APIの次世代標準プロトコル「Atom Publishing Protocol」

第4回 Atom Publishing Protocolを試す

この記事を読むのに必要な時間:およそ 7 分

第4回目は,より理解を深めていただけるよう,読者の皆様にもAtom Publishing Protocol(以下,AtomPub)を簡単に試していただけるツールや実装方法を幾つかご紹介します。

ツールの紹介(UNIXコマンドラインcURL)

最も簡単にAtomPubを試していただける手段の一つとして,UNIXコマンドラインツールである「cURL」(client for URLsの略でsee URL(シー・ユーアールエル)と発音します)を紹介します。このコマンドは,サーバから,あるいはサーバへデータ伝送を行うものです。対応するプロトコルはHTTP, HTTPS, FTP, TELNET, LDAP, FILE…と,盛りだくさんですが,AtomPubで利用する機能はHTTP(HTTPS)のみです。

cURLの使い方簡単にを以下に記述します。

[Usage]:curl [otions...] <url>

表1 cURL options

options説明
-X <command>HTTPメソッドの設定
例:-X POST)
--data-binary <data>POST,PUTするバイナリデータの設定
例:--data-binary @ntt.jpg※1
-HHTTPヘッダーの設定
例:-H Content-Type:image/jpeg

※1:ファイル名の前に"@"を付けること

cURLによるサービス文書の取得

それでは,実際にcURLを利用してみましょう。AtomPubの最初のステップは,サーバがどのようなコレクションを持っているか知るためにサービス文書を得ることです。具体的にはAtomPub対応のサーバは,クライアントにとっての最初の接続点であるサービス文書URIを公開していますので,そのURIに対してGETします。

表2 サービス文書URI

サイト名サービス文書URI備考
APP Test Sitehttp://bitworking.org/projects/
apptestsite/app.cgi/service/
;service_document
【作者】Joe Gregorio(Google)
【詳細】http://bitworking.org/
projects/apptestsite/
Perl Atompub test sitehttp://teahut.sakura.ne.jp:3000/
service
【作者】井上 武(NTT 未来ねっと研究所)
【詳細】http://teahut.sakura.ne.jp/
b/2007-07-26-1.html
Mixi Station API足跡:http://mixi.jp/atom/tracks
新着:http://mixi.jp/atom/notify
フォト:http://photo.mixi.jp/atom
【作者】(ミクシィ)
【注意】WSSE認証が必要

今回は接続先をAtomPubの提唱者であり,RFCの著者でもあるJoe GregorioさんのAPP Test Siteとし,cURLで接続してみます。

[dsakano@test $ curl -x GET "http://bitworking.org/projects/apptestsite/app.cgi/service/;serv
ice_document"
<?xml version="1.0" encoding="utf-8"?>
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
  <workspace>
    <atom:title>AtomPub Test Site</atom:title>
/*中略*/
    <collection href="media/">
      <atom:title>media</atom:title>
      <accept>*/*</accept>
      <categories fixed="yes" />
    </collection>
/*中略*/
  </workspace>
</service>

レスポンスとして返ってきたサービス文書を見ると,以下のことがわかります。

  • "AtomPub Test Site" というワークスペースがあること
  • "AtomPub Test Site"の中に"media"というコレクションがあること
  • "media"のコレクションURIはhttp://bitworking.org/projects/apptestsite/app.cgi/service/mediaであること
  • "media"に対するPOSTで許可されているのは"*/*"つまり,全てのファイル形式であること

cURLによるコレクションに新メンバーを追加

どのようなコレクションがあるかわかったところで,次は"media"コレクションに新しいメンバーを追加してみましょう。これはコレクションURIに対してPOSTすることで実現します。以下の例ではクライアントからサーバへfeed-red.jpgファイルをPOSTで送っています。サーバ側で正しく処理されてコレクションに新メンバーが追加されると以下の例のようにAtomエントリがレスポンスとして返ってきます。

[dsakano@test$  curl -H Content-Type:image/jpeg --data-binary @feed-red.jpg -X POST "http://bitworking.org/projects/apptestsite/app.cgi/service/media" 
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app">
  <title />
  <link href="http://bitworking.org/news/414/" />
  <id>http://bitworking.org/news/414/</id>
  /*中略*/
  <link href="414/" rel="edit" />
  <link href="414/;media" rel="edit-media" />
  <content src="http://bitworking.org/images/dev/414-.jpe" type="image/jpeg" />
</entry>

cURLによるメンバーの更新,削除

このAtomエントリからは次の情報が得られます。

上記二つのURIを利用することでこのメンバーを操作することができます。例えば,Atomエントリを更新したいとき(写真のタイトルやコメントを更新等)はエントリーリソースに対してPUTします。先ほどPOSTした画像そのものを更新したいときは,メディアリソースに対してPUTします。作成したメンバーをコレクションから削除したいときは,エントリーリソースに対してDELETEします。実際,消されているかどうかはコレクションURIをGETして視認するとよいでしょう。

このように,cURLを利用すれば非常に簡単にAtomPubを試すことができます。これはAtomPubの設計思想であるRESTがHTTP通信を利用するという非常に簡単かつ一般的である仕組みであるために,既存のツールを使えば簡単に試すことできるのです。

著者プロフィール

坂野大作(さかのだいさく)

NTTコミュニケーションズに入社後,先端IPアーキテクチャセンタにてモバイル,Webテクノロジ領域でアプリ開発・技術開発に取り組む。

コメント

コメントの記入