続・はてなブックマークAtomAPI の光と影
GET /atom/feed
続いて、“GET /atom/feed”を試してみた。この API で取得したブックマークの一覧には、tag が含まれてないんですね。ショック、ショック、大ショック〜♪
summary には、コメントから tag をきれいに取り除いたものが格納されて返ってきます。
tag を取り除く処理が入っているんだから、tag を別のフィールド(というか要素)として返そうと思えば返せるってことだよね? 今後のことを考えると、tag とコメントを別のフィールドにきちんと分けて欲しい。今ならまだ、比較的簡単に対応できますよね。
ってことで、idea:2246 が実現されることを強く希望します。
レスポンスの不統一
なんでこんなにバラバラなのか?
例えば、“http://del.icio.us/api/posts/add?”や “http://del.icio.us/api/posts/delete?”に対するレスポンスは
<?xml version='1.0' standalone='yes'?>
<result code="done" />
なのに “http://del.icio.us/api/tags/rename?”に対するレスポンスは
<?xml version="1.0" standalone="yes" ?>
<result>done</result>
だし、“http://del.icio.us/api/tags/bundles/set”と “http://del.icio.us/api/tags/bundles/delete” に至っては
<?xml version='1.0' standalone='yes'?>
<result>ok</result>
といった具合。節操なさすぎ(笑)
del.icio.us では done と ok を使い分けてる、っていう主張も何気に入っている。
ちなみに、エラー時のレスポンスは、“http://del.icio.us/api/tags/bundles/set”に対するものでも
<xml version="1.0" standalone="yes" ?>
<result code="something went wrong" />
といったように result code="エラーの種類、原因など" って形式になっている。
なので、正常時は <result code="ok" /> で統一してくれると吉。
過去の任意のはてなブックマークを編集しようとすると
当該ブックマークの eid がわからないとどうしようもないわけで
“GET /atom/feed”では「最近の」ブックマークの eid しかわからないため、「昔の」ブックマークを編集・削除したくなったときに Atom API 経由では、現状では操作ができない。そこで、任意のブックマークの eid を知るための API、もしくは全ブックマークの eid 一覧を取得できる API が欲しい(idea:2272)。
あるいは、“GET /atom/feed”を拡張して、任意の件数のブックマークを取得できるようにする(取得したい件数を指定できるようにする)というのでも OK。というか、件数を指定できないのって、不便すぎ。
あと「最近の」ってあいまいなこと言わずに、何日前まで(もしくは何件分)遡って取得するのか、具体的な数字を明示して欲しい。
はてなブックマークAtomAPI の光と影 3rd Stage
やっぱり、レスポンスには XML が入ってた方がいい
例えば、はてなブックマークAtomAPIを Ajax で使おうとすると、レスポンスに XML が含まれない API に関しては、以下のような問題を回避できないことになる。
xmlhttp.readyState == 4 && xmlhttp.status == 200
をもって正常レスポンスと判断している場合が多いようですが、Firefox では後述のバグ?によるエラーが発生します。
なので、xmlhttp.status を参照せず、xmlhttp.responseTextがあるかどうかで判断した方が良いようです。ひげぽん OSとか作っちゃうかMona- - XMLHttpRequest on Ajaxのあれこれxmlhttp.readyState == 4 && xmlhttp.responseText
Firefox にそんなバグがあったとは。
ってことで、xmlhttp.responseText に中身があることを保証する、すなわち、レスポンスとして常に XML を返すようにすることで救われるという話でした。