JSON::...r::CGI(3pm)

πŸ’– NAME πŸ’–

JSON::RPC::Legacy::Server::CGI β€” JSON-RPC sever for CGI. Bestie, this is the CGI-flavored server from the legacy JSON::RPC fam, and it lives in the User Contributed Perl Documentation as JSON::...r::CGI(3pm). The package name is long, the energy is immaculate, and yes, we're doing this. πŸ’…

✨ SYNOPSIS ✨

Okay so here's the whole group-chat plan: you set up the server in your CGI script, then write your app class with Public methods. Copy-paste core, exactly as the page serves it:

# CGI version
#--------------------------
# In your CGI script
use JSON::RPC::Legacy::Server::CGI;

my $server = JSON::RPC::Legacy::Server::CGI->new;

$server->dispatch('MyApp')->handle();

# or  an array ref setting

$server->dispatch( [qw/MyApp MyApp::Subclass/] )->handle();

# or a hash ref setting

$server->dispatch( {'/jsonrpc/API' => 'MyApp'} )->handle();

#--------------------------
# In your application class
package MyApp;

use base qw(JSON::RPC::Legacy::Procedure); # Perl 5.6 or more than

sub echo : Public {    # new version style. called by clients
    # first argument is JSON::RPC::Legacy::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];
}

🌸 DESCRIPTION 🌸

So like, what does this thing actually do? It's the CGI server-side bestie that:

  • 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.

And that's the tea. Well, you write your procedure code only. No cap, that's the whole assignment, bestie. 🫢

πŸ¦‹ METHODS πŸ¦‹

These are inherited from the JSON::RPC::Legacy::Server methods basically, bestie. The ones below are implemented in JSON::RPC::Legacy::Server::CGI:

  • new β€” creates a new JSON::RPC::Legacy::Server::CGI object. Brand-new server object, main character energy.
  • retrieve_json_from_post β€” retrieves a JSON request from the body in POST method.
  • retrieve_json_from_get β€” in the protocol v1.1, 'GET' request method is also allowable. It retrieves a JSON request from the query string in GET method.
  • response β€” returns a response JSON data to a client.
  • cgi β€” returns the CGI object.

🌈 SEE ALSO 🌈

Go check these out, iykyk:

πŸŽ€ AUTHOR πŸŽ€

Makamaka Hannyaharamitu, <makamaka[at]cpan.org> β€” icon, legend, author bestie. πŸ’–

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 bestie, that's the page. Source/version vibe check: perl v5.42.0, dated 2015-08-27, on JSON::...r::CGI(3pm). Slay and goodbye. πŸ’…βœ¨

πŸ“¦ where this page comes from