ブログ  前の記事  次の記事  2008-07-31 

たけまる / AtomPub on mixi?


2008-07-31

_ AtomPub on mixi? [atompub]

(2008-08-02 追記) lyokato さんから "N○KIA仕様" とのコメントをいた
だきました.

(2008-08-01 追記) id:mainyaa さんのご指摘通り,updated などを付けて
も投稿できました.mixi さんが修正したのか,僕が typo してたのか (た
ぶんこっち) は不明です.
POST のレスポンスに仕様と異なる部分があったので,追記しました.

mixi 日記が AtomPub に対応したという話題があちこちで盛り上がってま
す.

mixi for iPhoneから発掘されたmixi日記投稿用API « ku

といっても,mixi が正式に AtomPub 対応をアナウンスしたわけではない
し (知ってる限りでは),使ってみた感じでは "AtomPub に似てるけどちょっ
と違うプロトコル" という印象を受けました.粗探しして,仕様との相違
点を無理矢理探しているわけではなく,たぶん動かない AtomPub クライア
ントが存在するんじゃないかなと思いました.

というわけで,mixi クライアントを作ろうとしている人のために,注意す
るとよさそうな点をコメントしておきます.よかったら参考にしてくださ
い (mixi の人も :-).


- はてブでは,"PUT であるべきところで POST を使ってけしからん" と
  ありますが,PUT でも日記を作ることができました.おそらく,クライ
  アントの制限で POST も許可したのでしょう.

- title と summary 以外の XML 要素を付けても,日記には反映されませ
  ん.たとえば,updated で日時を指定することはできません.mixi の
  サービスを考えると,これはこれで良いのだと思いますが,ちょっと注
  意が必要です.

- Well-formed ではない XML を POST/PUT しても,エラーは返らず,空
  の日記が作られます.400 を返すとよいと思います.

- 古い名前空間を使ったサンプルコードが出回っていますが,新しい名前
  空間でも動作しました.

- 写真と本文を同じコレクションで扱っています.個人的には,変則的だ
  なと思いました.仕様違反ということではありません.
  写真なしの日記は,本文を POST すれば OK です.
  写真付き日記では,本文は Media Link Entry という扱いになります.
  つまり,写真を POST して,レスポンスの Location ヘッダに書かれて
  いる URI を取得し,本文を PUT することになります.

- AtomPub の仕様によれば,POST のレスポンスにある Location ヘッダ
  には,Edit URI が書かれています.Edit URI に対して GET すると,
  エントリが返ってくるはずです.しかし,mixi ではなぜかサービス文
  書が返ってきました.

- POST のレスポンスとしてエントリが返ってきますが,link/@rel の値
  が仕様と異なります.たとえば,サービス文書へのリンクは次のように
  なっています.
  <link rel="service.edit" href="http://mixi.jp/atom/diary/member_id=xxx/entry_id=xxx" type="application/atom+xml"/>
  サービス文書の Content-Type は,application/atomsvc+xml です.
  また,link[@rel="service.edit"] ではなく,link[@rel="service"]
  です.
  同様に,編集用の URI は link[@rel="edit"] が正しいです.

一言メッセージをこっそり送信できます (非公開)
 今年の西暦→