Personal tools

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みたいだ。ある意味スマートかも。でも可読性は悪い。かっちょいいけどアレゲ。

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

Category(s)
python
The URL to Trackback this entry is:
http://coreblog.org/ats/rest-full-url-on-turbogears/tbping

Re:TurboGearsでRESTfulなURLを

Posted by ただただし at 2006-04-04 10:10
背景が良くわかっていませんが、「update」とか「add_entry」というネーミングはRESTfulではないのでは?

Re:TurboGearsでRESTfulなURLを

Posted by ats at 2006-04-04 11:00
>たださん

確かにそうですね(^^;
ご指摘感謝します:-)

Re:TurboGearsでRESTfulなURLを

Posted by liris at 2006-04-04 12:18
RESTfullかどうか別として、URLの設計でぼくも困りした。

ぼくは解決策1のほうでがんばっています。管理系は、/users/save/(liris)みたいにしていますが。。。
解決法2は面白そうなんですが、TGの流儀じゃないような感じ(ぼくの感覚ですが)がしてやっていません。TwistedのWebフレームワークは解決策2の方ですね(Zopeより?)。

Re:TurboGearsでRESTfulなURLを

Posted by ats at 2006-04-04 13:57
>lirisさん

blogearsのソースは,貴重なサンプルコードとして拝見させて頂いております:-)

そういえばfastdataが似たようなこと(DB上のデータのIDをURLの真ん中に持ってくる)やってたな,と思ってコードを見てみました
ちょっと華麗に,defaultでがんばっていました

http://trac.turbogears.org/turbogears/browser/trunk/turbogears/fastdata/datacontroller.py

セキュリティについては,デコレータ指定すれば守られるはずなので,心配する必要はないみたいですね
(もちろん,設計には十分気をつける必要がある)

RESTfulControllerなるクラスを作ればいいのかな
Djangoみたいに,正規表現でURLからデータを引っ張ってくるようにするとか
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
コメントスパム避けのための認証文字列です

Captcha Image

Pythonな求人
r = urlopen("http://www.webcore.co.jp/recruit")
About this blog
■Author


atsこと柴田淳です。Atsushiはガイジンにうまく発音して頂けないので,これからはJunというペンネームで行こうと思っていましたがあんまり使ってません。
Webcore株式会社 代表取締役
■TRIVIAL TECHNOLOGIES 2.0
トリビアル・テクノロジー 2.0,「トリテク 2.0」と呼んでください。
Blog(ブログ)サイトです。Plone上で動く,オープンソースのBlog Product - COREBlog2を使っています。
 
最近書いた本,Mook
みんなのPython Webアプリ編
Pythonの基礎から,Webアプリやフレームワークの仕組みまで,つまることなく一気に学べる書籍です。「みんなのPython」と一緒に読んでください:-)。
みんなのPython
Pythonの入門書です。基本的なことから分かりやすく解説するよう勤めました。Pythonをはじめたいと思っている人,JavaやC++,PerlやRubyを学ぼうと思って躓いてしまった人はぜひ読んで下さい。
 

Powered by Plone, the Open Source Content Management System