1JSON::RPC::Legacy::ServUesre(r3)Contributed Perl DocumenJtSaOtNi:o:nRPC::Legacy::Server(3)
2
3
4
6 JSON::RPC::Server - Perl implementation of JSON-RPC sever
7
9 # CGI version
10 use JSON::RPC::Legacy::Server::CGI;
11
12 my $server = JSON::RPC::Legacy::Server::CGI->new;
13
14 $server->dispatch_to('MyApp')->handle();
15
16
17
18 # Apache version
19 # In apache conf
20
21 PerlRequire /your/path/start.pl
22 PerlModule MyApp
23
24 <Location /jsonrpc/API>
25 SetHandler perl-script
26 PerlResponseHandler JSON::RPC::Legacy::Server::Apache
27 PerlSetVar dispatch "MyApp"
28 PerlSetVar return_die_message 0
29 </Location>
30
31
32
33 # Daemon version
34 use JSON::RPC::Legacy::Server::Daemon;
35
36 JSON::RPC::Legacy::Server::Daemon->new(LocalPort => 8080);
37 ->dispatch({'/jsonrpc/API' => 'MyApp'})
38 ->handle();
39
40
41
42 # FastCGI version
43 use JSON::RPC::Legacy::Server::FastCGI;
44
45 my $server = JSON::RPC::Legacy::Server::FastCGI->new;
46
47 $server->dispatch_to('MyApp')->handle();
48
50 Gets a client request.
51
52 Parses its JSON data.
53
54 Passes the server object and the object decoded from the JSON data to
55 your procedure (method).
56
57 Takes your returned value (scalar or arrayref or hashref).
58
59 Sends a response.
60
61 Well, you write your procedure code only.
62
64 new Creates new JSON::RPC::Legacy::Server object.
65
66 dispatch($package)
67 dispatch([$package1, $package1, ...])
68 dispatch({$path => $package, ...})
69 Sets your procedure module using package name list or arrayref or
70 hashref. Hashref version is used for path_info access.
71
72 dispatch_to
73 An alias to "dispatch".
74
75 handle
76 Runs server object and returns a response.
77
78 raise_error(%hash)
79 return $server->raise_error(
80 code => 501,
81 message => "This is error in my procedure."
82 );
83
84 Sets an error. An error code number in your procedure is an
85 integer between 501 and 899.
86
87 json
88 Setter/Getter to json encoder/decoder object. The default value is
89 JSON object in the below way:
90
91 JSON->new->utf8
92
93 In your procedure, changes its behaviour.
94
95 $server->json->utf8(0);
96
97 The JSON coder creating method is "create_json_coder".
98
99 version
100 Setter/Getter to JSON-RPC protocol version used by a client. If
101 version is 1.1, returns 1.1. Otherwise returns 0.
102
103 charset
104 Setter/Getter to charset. Default is 'UTF-8'.
105
106 content_type
107 Setter/Getter to content type. Default is 'application/json'.
108
109 return_die_message
110 When your program dies in your procedure, sends a return object
111 with error message 'Procedure error' by default.
112
113 If this option is set, uses "die" message.
114
115 sub your_procedure {
116 my ($s) = @_;
117 $s->return_die_message(1);
118 die "This is test.";
119 }
120
121 retrieve_json_from_post
122 It is used by JSON::RPC::Legacy::Server subclass.
123
124 retrieve_json_from_get
125 In the protocol v1.1, 'GET' request method is also allowable.
126
127 It is used by JSON::RPC::Legacy::Server subclass.
128
129 response
130 It is used by JSON::RPC::Legacy::Server subclass.
131
132 request
133 Returns HTTP::Request object.
134
135 path_info
136 Returns PATH_INFO.
137
138 max_length
139 Returns max content-length to your application.
140
141 translate_error_message
142 Implemented in your subclass. Three arguments (server object,
143 error code and error message) are passed. It must return a
144 message.
145
146 sub translate_error_message {
147 my ($s, $code, $message) = @_;
148 return $translation_jp_message{$code};
149 }
150
151 create_json_coder
152 (Class method) Returns a JSON de/encoder in "new". You can
153 override it to use your favorite JSON de/encode.
154
156 When a client call a procedure (method) name 'system.foobar',
157 JSON::RPC::Legacy::Server look up MyApp::system::foobar.
158
159 <http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ProcedureCall>
160
161 <http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ServiceDescription>
162
163 There is JSON::RPC::Legacy::Server::system::describe for default
164 response of 'system.describe'.
165
167 JSON
168
169 <http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html>
170
171 <http://json-rpc.org/wiki/specification>
172
174 Makamaka Hannyaharamitu, <makamaka[at]cpan.org>
175
177 Copyright 2007-2008 by Makamaka Hannyaharamitu
178
179 This library is free software; you can redistribute it and/or modify it
180 under the same terms as Perl itself.
181
182
183
184perl v5.36.0 2023-01-20 JSON::RPC::Legacy::Server(3)