The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

RPC::Any::Server::JSONRPC::HTTP - A JSON-RPC server that understands HTTP

SYNOPSIS

use RPC::Any::Server::JSONRPC::HTTP;
# Create a server where calling Foo.bar will call My::Module->bar.
my $server = RPC::Any::Server::JSONRPC::HTTP->new(
   dispatch  => { 'Foo' => 'My::Module' },
   allow_get => 0,
);
# Read HTTP headers and JSON from STDIN and print result,
# including HTTP headers, to STDOUT.
print $server->handle_input();

# HTTP servers also take HTTP::Request objects, if you want.
my $request = HTTP::Request->new(POST => '/');
$request->content('<?xml ... ');
print $server->handle_input($request);

DESCRIPTION

This is a type of RPC::Any::Server::JSONRPC that understands HTTP. It has all of the features of RPC::Any::Server, RPC::Any::Server::JSONRPC, and RPC::Any::Interface::HTTP. You should see those modules for information on configuring this server and the way it works.

The parser attribute (which you usually don't need to care about) in a JSONRPC::HTTP server is a JSON::RPC::Common::Marshal::HTTP (as opposed to the basic JSONRPC server, where it's a Marshal::Text instead of Marshal::HTTP).

HTTP GET SUPPORT

Since this is based on JSON::RPC::Common, it supports all the various HTTP GET specifications in the various "JSON-RPC over HTTP" specs, if you turn on allow_get.