JSON::RPC::Server - Perl implementation of JSON-RPC sever
# CGI version use JSON::RPC::Legacy::Server::CGI; my $server = JSON::RPC::Legacy::Server::CGI->new; $server->dispatch_to('MyApp')->handle(); # Apache version # In apache conf PerlRequire /your/path/start.pl PerlModule MyApp <Location /jsonrpc/API> SetHandler perl-script PerlResponseHandler JSON::RPC::Legacy::Server::Apache PerlSetVar dispatch "MyApp" PerlSetVar return_die_message 0 </Location> # Daemon version use JSON::RPC::Legacy::Server::Daemon; JSON::RPC::Legacy::Server::Daemon->new(LocalPort => 8080); ->dispatch({'/jsonrpc/API' => 'MyApp'}) ->handle(); # FastCGI version use JSON::RPC::Legacy::Server::FastCGI; my $server = JSON::RPC::Legacy::Server::FastCGI->new; $server->dispatch_to('MyApp')->handle();
Gets a client request.
Parses its JSON data.
Passes the server object and the object decoded from the JSON data to your procedure (method).
Takes your returned value (scalar or arrayref or hashref).
Sends a response.
Well, you write your procedure code only.
Creates new JSON::RPC::Legacy::Server object.
Sets your procedure module using package name list or arrayref or hashref. Hashref version is used for path_info access.
An alias to dispatch.
dispatch
Runs server object and returns a response.
return $server->raise_error( code => 501, message => "This is error in my procedure." );
Sets an error. An error code number in your procedure is an integer between 501 and 899.
Setter/Getter to json encoder/decoder object. The default value is JSON object in the below way:
JSON->new->utf8
In your procedure, changes its behaviour.
$server->json->utf8(0);
The JSON coder creating method is create_json_coder.
create_json_coder
Setter/Getter to JSON-RPC protocol version used by a client. If version is 1.1, returns 1.1. Otherwise returns 0.
Setter/Getter to charset. Default is 'UTF-8'.
Setter/Getter to content type. Default is 'application/json'.
When your program dies in your procedure, sends a return object with error message 'Procedure error' by default.
If this option is set, uses die message.
die
sub your_procedure { my ($s) = @_; $s->return_die_message(1); die "This is test."; }
It is used by JSON::RPC::Legacy::Server subclass.
In the protocol v1.1, 'GET' request method is also allowable.
Returns HTTP::Request object.
Returns PATH_INFO.
Returns max content-length to your application.
Implemented in your subclass. Three arguments (server object, error code and error message) are passed. It must return a message.
sub translate_error_message { my ($s, $code, $message) = @_; return $translation_jp_message{$code}; }
(Class method) Returns a JSON de/encoder in new. You can override it to use your favorite JSON de/encode.
new
When a client call a procedure (method) name 'system.foobar', JSON::RPC::Legacy::Server look up MyApp::system::foobar.
http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ProcedureCall
http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ServiceDescription
There is JSON::RPC::Legacy::Server::system::describe for default response of 'system.describe'.
JSON
http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html
http://json-rpc.org/wiki/specification
Makamaka Hannyaharamitu, <makamaka[at]cpan.org>
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.
To install JSON::RPC, copy and paste the appropriate command in to your terminal.
cpanm
cpanm JSON::RPC
CPAN shell
perl -MCPAN -e shell install JSON::RPC
For more information on module installation, please visit the detailed CPAN module installation guide.