API関係
現在 Catalyst::Plugin::RPC
という RPC の統合プラグインを作成してます。
以下のような感じ。
use Catalyst qw/
RPC
RPC::Serializer::URIQuery
RPC::Serializer::XML
RPC::Serializer::JSON
/;
などと RPC と一緒に使いたいプロトコルのシリアライザをロードしておくと
# endpoint
sub rpc : Global {
my ( $self, $c ) = @_;
$c->rpc;
}
sub echo : RPC('myapp.echo') {
my ( $self, $c, @args ) = @_;
@args;
}
というような RPC アクションが利用できるようになるというものです。
deserializer はリクエストの Content-Type から自動的に判別されるため、同じアクションを複数のプロトコルで共有できます。(このあたりはmiyagawaさんインスパイア)
serializer はデフォルトでは deserializer と同じになりますが、format=json などとクエリで渡し指定することも可能となっています。
Plugin::Flavour と組み合わせて /rpc.js 等とアクセスすれば Serializer::JSON が使われるようにもできますかね。これはどうしようかな。
とりあえず今はRPCプラグイン本体を大まかに実装して、sri のコードコピペして Serializer::XML 作って XMLRPC のみ動くようになった段階。
なんか同じようなことしてる人がいるっぽいので情報共有もかねて書いてみるw
フィードバックフィードバック!