NAME
JSON::RPC - Perl implementation of JSON-RPC 1.1 protocol
DESCRIPTION
JSON-RPC is a stateless and light-weight remote procedure call (RPC)protocol for inter-networking applications over HTTP. It uses JSONas the data format for of all facets of a remote procedure call,including all application data carried in parameters.
quoted from <http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html>.
This module was in JSON package on CPAN before. Now its interfaces was completely changed.
The old modules - JSONRPC::Transport::HTTP and Apache::JSONRPC are deprecated. Please try to use JSON::RPC::Server and JSON::RPC::Client which support both JSON-RPC protocol version 1.1 and 1.0.
EXAMPLES
CGI version.
#--------------------------# In your application classpackage MyApp;use base qw(JSON::RPC::Procedure); # Perl 5.6 or more thansub echo : Public { # new version style. called by clients# first argument is JSON::RPC::Server object.return $_[1];}sub sum : Public(a:num, b:num) { # sets value into object member a, b.my ($s, $obj) = @_;# return a scalar value or a hashref or an arryaref.return $obj->{a} + $obj->{b};}sub a_private_method : Private {# ... can't be called by client}sub sum_old_style { # old version style. taken as Publicmy ($s, @arg) = @_;return $arg[0] + $arg[1];}#--------------------------# In your triger script.use JSON::RPC::Server::CGI;use MyApp;# simpleJSON::RPC::Server::CGI->dispatch('MyApp')->handle();# orJSON::RPC::Server::CGI->dispatch([qw/MyApp FooBar/])->handle();# or INFO_PATH versionJSON::RPC::Server::CGI->dispatch({'/Test' => 'MyApp'})->handle();#--------------------------# Clientuse JSON::RPC::Client;my $client = new JSON::RPC::Client;my $uri = 'http://www.example.com/jsonrpc/Test';my $obj = {method => 'sum', # or 'MyApp.sum'params => [10, 20],};my $res = $client->call( $uri, $obj )if($res){if ($res->is_error) {print "Error : ", $res->error_message;}else {print $res->result;}}else {print $client->status_line;}# or$client->prepare($uri, ['sum', 'echo']);print $client->sum(10, 23);
See to JSON::RPC::Server::CGI, JSON::RPC::Server::Daemon, JSON::RPC::Server::Apache JSON::RPC::Client and JSON::RPC::Procedure.
ABOUT NEW VERSION
- supports JSON-RPC protocol v1.1
TODO
- Document
- Examples
- More Tests
AUTHOR
Makamaka Hannyaharamitu, <makamaka[at]cpan.org>
COPYRIGHT AND LICENSE
Copyright 2007-2008 by Makamaka Hannyaharamitu
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.