JSON::RPC.3pm

Langue: en

Autres versions - même langue

Version: 2008-02-25 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

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 JSON
  as 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 <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 class
  package MyApp;
  
  use base qw(JSON::RPC::Procedure); # Perl 5.6 or more than
  
  sub 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 Public
      my ($s, @arg) = @_;
     return $arg[0] + $arg[1];
  }
  
  
  #--------------------------
  # In your triger script.
  use JSON::RPC::Server::CGI;
  use MyApp;
  
  # simple
   JSON::RPC::Server::CGI->dispatch('MyApp')->handle();
  
  # or 
  JSON::RPC::Server::CGI->dispatch([qw/MyApp FooBar/])->handle();
  
  # or INFO_PATH version
  JSON::RPC::Server::CGI->dispatch({'/Test' => 'MyApp'})->handle();
  
  #--------------------------
  # Client
  use 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 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.