@nqounetです。
先日公開したばかりですが、JSON::RPC::Specをアップデートしました。
Router::Simpleを使ってます
もともと、JSON::RPCがRouter::Simpleを使っていた事もあって、JSON::RPC::SpecでもRouter::Simpleを使って書いていました。
ところが、せっかくマッチングできるのに、その結果を利用できなかったので、マッチング後のハッシュをリファレンスで渡すようにしました。これができないとRouter::Simpleを使っている意味がありません。
マッチングを使ったmethodはこのように書くことができます。
|
|
これまでMojoliciousばかり使ってきたので、Router::Simpleがどんな事をするのかも、よくわかっていませんでした。
というか、Mojoliciousのようにcontrollerとかactionを指定すると、Moduleに紐付ける機能があると思っていたのですが、そういうものではなく、条件とデータを設定しておくと、マッチした時にそのデータを取り出してくれる、とてもシンプルな機能のものでした。
使い方がわかると便利さがわかりますね。
JSON::RPC::Specにも、Router::Simpleのエッセンスが使えるようになりました。
如何でしょうか?
JSON::RPC::Dispatchは高性能
JSON::RPC::Dispatchは、Router::Simpleの機能をうまく使っていると思いました。
予めデータとしてhandler
とaction
を指定しておくと、その2つから実行するべき関数を上手に呼び出してくれます。
handler
にインスタンスを渡しておくと、そのインスタンスからaction
のmethodを呼び出してくれます。
そして、handler
やaction
は単なるハッシュのキーなので、マッチングに使っておくと、JSONで指定した関数を呼び出すこともできます。
|
|
上記の場合、package MyApp::Echo
にある、{action}
にマッチした関数が呼び出されます。
自前でこういうのを実装するのは結構面倒なので、柔軟に処理を振り分けたい場合はとても便利ですね。