久しぶりにCatalyst
やっと一息つける時間だ。というわけで卒業研究に向けて軽くCatalystをいじってみる。APIプログラミングにしたいんでView::JSONでほげほげしてみるテスト。
とりあえずViewで作りますが、TT作る要領で
% script/testapp_create.pl view JSON JSON
な感じでおっけ。さすがMVC。
で、どう使っていくかですが、stashに入れるみたいですがどのkeyを使うかを
expose_stashで指定するみたいなのでconfigのyamlに
View::JSON : expose_stash : TestValues
って書くとstash->{TestValues}が使われるみたいで。そして試しにこう書いて
sub test : Global { my ( $self, $c ) = @_; $c->stash->{TestValues} = { Hash => "reference" }; $c->forward( $c->view("JSON") ); }
localhost:3000/test ってやるとこうでます。
{"Hash":"reference"}
で、configを
View::JSON : expose_stash : - TestValues
こうすると
{"TestValues":{"Hash":"reference"}}
こう返ってきます。なんかここらへんDBICみたい。
あと、expose_stashを変えたい場合(そんな場面ないよな、きっと)
$c->component('View::JSON')->{expose_stash};
なんてやると設定値getできるみたいです。つかcomponentをはじめて知った。
そしてモードかなんかで出力割り振りたい場合、
sub end : ActionClass('RenderView') { my ( $self, $c ) = @_; if ( $c->req->param("format") eq "json" ) { $c->forward( $c->view("JSON") ); } }
こんなん書いたら test?format=json って書いたらjson返ってきたよ。おっけおっけ。
RenderViewってこう使うのね。勉強になる。
とりあえずJSONは吐けたからあとはフォーマットとインターフェースかな。