日向夏特殊応援部隊

俺様向けメモ

JSON-RPCをJSON-Shellで試してみる

Install

JSON-ShellJSON RPCを実装しているエンドポイントに対して、メソッドを実行する為のshellです。

ですが、なんかこのモジュールのインストールがなかなか上手く行きませんでした。
とりあえず

  1. Term-ReadLine-Gnu

を入れるととりあえず動作するようなるみたいです。謎。*1

さっそく実行

jsonshellコマンドがインストールされているので、
実際に実行してみましょう。

$ jsonshell 

とするとJSON::Shellに入れます。
JSON-RPCの公式サイトにあるサービス一覧にデモがあるので、これをサンプルとして試してみるです。

endpointのセット

まずはどのRPCを使うかを決めないとダメみたいです。
下記のようにendpointを設定します。

$ endpoint http://www.raboof.com/Projects/Jayrock/Demo.ashx
Endpoint set.
methodの実行

http://www.raboof.com/Projects/Jayrock/Demo.ashxにもありますが、
method一覧がありますので、幾つか使ってみましょう。

www.raboof.com/Projects/Jayrock/Demo.ashx$ post now ""
REQUEST: $VAR1 = {
          'params' => [],
          'id' => 226991,
          'method' => 'now'
        };

RESPONSE: $VAR1 = {
          'id' => 226991,
          'result' => '2006-12-02T09:24:13.1172500-07:00'
        };
www.raboof.com/Projects/Jayrock/Demo.ashx$ post sum "1, 5"
REQUEST: $VAR1 = {
          'params' => [
                        1,
                        5
                      ],
          'id' => 678853,
          'method' => 'sum'
        };

RESPONSE: $VAR1 = {
          'id' => 678853,
          'result' => 6
        };

ほう、面白いですね。

JSON-RPC in CPAN

http://search.cpan.org/search?query=JSON+RPC&mode=module

特に今回のJSON-Shellと似てるモジュールとしてRPC::JSON::Shellってのがある模様。

というわけでJSON::SyckだとかDBIx::JSONとかで
Perlでは、かなりシームレスにJSON吐き出しが出来るんで、
JSONRPCって結構便利なんじゃないのーなんて思ったり。

世間ではJSONPも騒がれてるけど、いずれにせよJSONって結構使い勝手がいいと思う。

個人的にはブレースによって対応関係が明確になる分、YAMLよりHuman Readableだと思うんですが、如何ですかね?w

*1:Google Code Searchで判明しますた。凄い便利