たけまる / 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"] が正しいです.
