jsonrpc2 is WSGI Framework for JSON RPC 2.0. JSON RPC 2.0 Spec can be seen on http://groups.google.com/group/json-rpc/web/json-rpc-2-0
install via pip:
$ pip install jsonrpc2
or install via easy_install:
$ easy_install jsonrpc2
write your procedures in hello.py:
def greeting(name):
return dict(message="Hello, %s!" % name)
run jsonrpc2 server:
$ runjsonrpc2 hello
create project with paste script template:
$ paster create -t paster_jsonrpc2 myrpc $ cd myrpc
run server
$ paster serve run.ini
access http://localhost:8080/
>>> import simplejson as json >>> from jsonrpc2 import JsonRpcApplication
sample procedure:
>>> def greeting(name="world"): ... return "Hello, %s!" % name
create rpc application:
>>> app = JsonRpcApplication(rpcs=dict(greeting=greeting))
set up for test:
>>> from webtest import TestApp >>> testapp = TestApp(app)
call procedure:
>>> call_values = {'jsonrpc':'2.0', 'method':'greeting', 'id':'greeting'}
>>> res = testapp.post('/', params=json.dumps(call_values), content_type="application/json")
got results:
>>> res.json
{'jsonrpc': '2.0', 'id': 'greeting', 'result': 'Hello, world!'}
lazy loading:
>>> app.rpc.methods['sample.add'] = 'tests.sample:add'
>>> call_values = {'jsonrpc':'2.0', 'method':'sample.add', 'id':'sample.add', 'params':[1, 2]}
>>> res = testapp.post('/', params=json.dumps(call_values), content_type="application/json")
>>> res.json
{'jsonrpc': '2.0', 'id': 'sample.add', 'result': 3}
>>> from jsonrpc2 import JsonRpc
>>> rpc = JsonRpc()
>>> rpc['add'] = lambda a, b: a + b
>>> rpc({'jsonrpc': '2.0', 'method': 'add', 'id': 'rpc-1', 'params': {'a': 2}}, b=3)
{'jsonrpc': '2.0', 'id': 'rpc-1', 'result': 5}