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としてそれを指定する」というもので、コード自体もなかなか面白かったです。