REST と GET

RESTful なアプリケーションでは、対象とするリソースに副作用を及ぼすときは POST なり PUT を使うのがベストプラクティス。(ベストプラクティスという言葉を使ってみたかった!) この考え方はウェブアプリケーションを作るときに、GET にするか POST にするかに明確な指針を与えてくれてすっきりします。

で、ふと思ったんだけど、表面的には GET でよさそうだけども実は中でリソースに副作用が及んでいるような代物はどうしたらいいんだろうなということ。例えば検索エンジンなんかで、クリックに合わせて後ろでクリック回数を数えてたり統計とってたりするものがあると思うんだけど、そういう類。

ウェブサイトの検索エンジンとかだとクリック対象の URI が差すリソースが外部サイトでちょっとイメージしづらいので、例えば search.cpan.org など。モジュールの検索結果からのクリック回数を計算してるかどうかは分かりませんが、仮にこういう検索エンジンで裏で統計を取りたい場合。各モジュールへのリンクを踏むときの操作は明らかに GET じゃないと使いづらいのだけど、裏ではそのリソースの被参照回数という属性を更新してるという。こういう時は? そもそもそういうリソースの更新の仕方自体がいけてないとか?

と、ふと疑問におもったという話。