- 2010/7/10 土曜日 23:53:26
- perl
Path::AttrRouterというtypesterさんが開発されているdispatcherがあって、Catalyst-likeなControllerのattributeを拾ってきてルーティングテーブルを作成してくれるのが便利で使っています。
で、HTTPメソッドを考慮したルーティングを行ってくれる機能が欲しかったので追加してみました。
method_supportブランチとしてforkしてgithubにあげてあります。
使い方はこんな感じです。
use Path::AttrRouter;
{
package MyController;
use base 'Path::AttrRouter::Controller';
sub index :Path { print "index\n" }
sub post :Path Method('POST') { print "post\n" }
}
my $router = Path::AttrRouter->new( search_path => 'MyController' );
my $m;
$m = $router->match('/', 'GET');
$m->dispatch; # index
$m = $router->match('/', 'POST');
$m->dispatch; # post
Methodが指定されなかったsubroutineはGET, HEADがデフォルトになるようになってます。
一応後方互換性は考慮してあり、$router->matchの第二引数が空の場合は
どのメソッドでもマッチするようになっています。
本家にとりこまれればうれしいけれど取り込まれなければ別distとして継承使って作り直すかもです。
ところで、諸事情により前職を退職していまして、ブログURLを移転しています。
RSSリーダーに登録されていた方等は再度登録お願い致しますです。
一応302飛ばすようにしてはあるんですが、RSSリーダーって自動的にそこらへん追跡してくれないんすかね。
追記(2010-07-11 17:17)
http://twitter.com/#!/typester/status/18255875606
とのことです。確かにPath::名前スペースなのでHTTPメソッドに依存するのは筋悪でした。
HTTP::AttrRouterとかで作ってみようかなーと考え中。
コメント:0
トラックバック:0
- この記事のトラックバック URL
- https://blog.everqueue.com/chiba/2010/07/10/417/trackback/
- トラックバックの送信元リスト
- Path::AttrRouterにHTTPメソッド制限できる機能を追加してみた - へぼい日記 より