2008年2月9日土曜日

REST:哲学か、実用か

理念と現実の対立はどの世界にもある。
最近、Webサービスが盛んだが、SOAPよりRESTの方が多いらしい。
RESTは、Webサービス専用のフレームワークではない。むしろ、HTTPを一般化したアーキテクチャである。あくまで概念的なものであるから哲学といえるだろう。
RESTは、
・(内容ではなく意味の)同一性を表す識別子としてURLを使う。
・操作をHTTPのメソッドに対応させる。
・ステートレスである。
などの特徴を持つ。これらにより効果的にキャッシュすることができる。しかし、これらの特徴、特にHTTP操作への忠実な対応によりテストが難しくなる。
HTTPのメソッドをCRUDに対応させると、POST(Create)、GET(Retrieval)、PUT(Update)、DELETE(Delete)となる。このうちHTML Fromから利用できるのはGETとPOSTだけだ。
そこで、「method=~」のようなパラメータをつけたくなる。もちろん同名のパラメータをアプリケーションが使うなら別名にしなければならない。例えば、「_method=~」とすればよい。
ところがRESTの哲学では、これは邪道だ。しかし、テストだけに限れば、りっぱな方法論だと思う。テストはformのmethodで行い、完成すればHTTPのメソッドで動かす。これにより理想と現実を両立できる。

0 件のコメント: