Sooey

2011-09-28 19:33:21 +0900

WebサービスAPIにおけるバージョン情報の指定方法

Herokuアドオンとしても提供されているFlying SphinxのAPIを開発したデベロッパーの方が、APIのバージョニングについて面白いエントリを書いていました。

APIのバージョンを明示してアクセスする場合は、

https://api.twitter.com/1/statuses/user_timeline.json

というようにURLにAPIバージョン(この場合は1)が含まれるようなスタイルが多いですが、ScalariumというサービスのAPIでは、HTTPヘッダに

Accept: application/vnd.scalarium-v1+json

というようにしてAPIバージョンを含める仕様となっています。

後者についてはAsk HN: Version numbers in a REST APIで、URLのパスがリソースにのみフォーカスするようになるという点でよりRESTfulなアプローチだ、という指摘があり、このデベロッパーさんもRailsで後者のアプローチをとることにしたようです。

実装方法が「独自のConstraintクラスを作成して、Railsのルーティングにconstraintとしてそれを指定する」というもので、コード自体もなかなか面白かったです。