このサイトについて

TurboGearsでRESTfulなURLを

TurboGearsでRESTfulなURLを

Rootがあります。その下にusersがあります。その下にユーザID(atsとかfooとかbarとか)がぶら下がります。で,さらにupdateとかadd_entryとかハンドラ(メソッド)がぶら下がります。これがやりたいことです。

 /users/(ats)/
 /users/(ats)/[update]
 /users/(ats)/[add_entry]

usersはController由来のクラスです。(〜)の部分はDB依存で変化します。[〜]の部分は多分,controller由来のクラスにくっついたクラスメソッドです。

ユーザを追加すると真ん中が変わるので困ります。何とかしたいです。

解決法1 : usersクラスのdefault()でがんばる

引数をガッチンコしてuseridを取り出しつつmethodを呼んだり。でも,defaultがでかくなってメンテしにくそうだし,かといって華麗にやろうとおもうとセキュリティが心配。ていうかリクエストをbrokeする,みたいな低レベルの処理を書くのはなんかイケてない。

解決法2 : usersの下に,ユーザデータをハンドリングするクラスインスタンスを動的にくっつける

で,そのアトリビュートというかキーがatsとかfooとかいったユーザIDになっていると。usersのdefauultで引数をキーにしてDBに問い合わせ,動的にアトリビュートをくっつけたりするんだろうか。

Zopeみたいだ。ある意味スマートかも。でも可読性は悪い。かっちょいいけどアレゲ。

どうするのがスマートなんだろうなあ。

2010-08-27 04:39