JSON::...:Server(3pm)

🌸 NAME 🌸

okay bestie, this is the manual page for JSON::...:Server(3pm) from User Contributed Perl Documentation πŸ’– and it's giving:

  • JSON::RPC::Server β€” Perl implementation of JSON-RPC sever ✨

πŸŽ€ SYNOPSIS πŸŽ€

here's the quick-start menu, one vibe per server flavor πŸ‘‘

# 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();

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so the whole flow is literally this, no cap:

  1. Gets a client request.
  2. Parses its JSON data.
  3. Passes the server object and the object decoded from the JSON data to your procedure (method).
  4. Takes your returned value (scalar or arrayref or hashref).
  5. Sends a response.

And then: well, you write your procedure code only. That's the main character energy part πŸ’…


✨ METHODS ✨

  • new β€” Creates new JSON::RPC::Legacy::Server object. πŸŽ€
  • dispatch($package) / dispatch([$package1, $package1, ...]) / dispatch({$path => $package, ...}) β€” Sets your procedure module using package name list or arrayref or hashref. The hashref version is used for path_info access. πŸ‘‘
  • dispatch_to β€” An alias to dispatch.
  • handle β€” Runs server object and returns a response.
  • raise_error(%hash) β€” Sets an error. An error code number in your procedure is an integer between 501 and 899. Example time:
return $server->raise_error(
   code => 501,
   message => "This is error in my procedure."
);
  • json β€” 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".

  • version β€” Setter/Getter to JSON-RPC protocol version used by a client. If version is 1.1, returns 1.1. Otherwise returns 0.
  • charset β€” Setter/Getter to charset. Default is 'UTF-8'.
  • content_type β€” Setter/Getter to content type. Default is 'application/json'.
  • return_die_message β€” 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.
sub your_procedure {
    my ($s) = @_;
   $s->return_die_message(1);
   die "This is test.";
}
  • retrieve_json_from_post β€” It is used by JSON::RPC::Legacy::Server subclass.
  • retrieve_json_from_get β€” In the protocol v1.1, 'GET' request method is also allowable. It is used by JSON::RPC::Legacy::Server subclass.
  • response β€” It is used by JSON::RPC::Legacy::Server subclass.
  • request β€” Returns HTTP::Request object.
  • path_info β€” Returns PATH_INFO.
  • max_length β€” Returns max content-length to your application.
  • translate_error_message β€” 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};
}
  • create_json_coder β€” (Class method) Returns a JSON de/encoder in "new". You can override it to use your favorite JSON de/encode.

πŸ’œ RESERVED PROCEDURE πŸ’œ

When a client call a procedure (method) name 'system.foobar', JSON::RPC::Legacy::Server look up MyApp::system::foobar.

There is JSON::RPC::Legacy::Server::system::describe for default response of 'system.describe'.


🌈 SEE ALSO 🌈


πŸ‘‘ 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.


okay that's the whole manual, bestie 🫢 this page came from perl v5.42.0, dated 2015-08-27, and it's JSON::...:Server(3pm) β€” go be iconic with your JSON-RPC server πŸ’…βœ¨

πŸ“¦ where this page comes from