Over-simple JSON-RPC Python implementation for aiohttp
Project description
Over-Simple JSON RPC Implementation
Over-simple JSON-RPC Python implementation for aiohttp
Install
pip install osjsonrpc
Usage
Example:
from aiohttp import web
from osjsonrpc import JsonRpcEndpoint
def ping():
return "pong"
def multiply(a, b):
return {"a": a, "b": b, "a*b": a * b}
rpc = (
JsonRpcEndpoint()
.register_method(ping)
.register_method(multiply)
)
app = web.Application()
app.add_routes([rpc.route("/api")])
web.run_app(app)
Call the ping
method without arguments:
~ curl -s -H "Content-Type: application/json" -H "Accept: application/json" -X POST \
-d '{"jsonrpc":"2.0", "method": "ping", "id": 1}' \
http://localhost:8080/api | jq
{
"jsonrpc": "2.0",
"result": "pong",
"id": 1
}
Call the multiply
with a couple of positional arguments:
~ curl -s -H "Content-Type: application/json" -H "Accept: application/json" -X POST \
-d '{"jsonrpc":"2.0", "method": "multiply", "params": [3, 5], "id": 1}' \
http://localhost:8080/api | jq
{
"jsonrpc": "2.0",
"result": {
"a": 3,
"b": 5,
"a*b": 15
},
"id": 1
}
Call the ping
argument with invalid keyword argument:
~ curl -s -H "Content-Type: application/json" -H "Accept: application/json" -X POST \
-d '{"jsonrpc":"2.0", "method": "ping", "params": {"key": "value"}, "id": 1}' \
http://localhost:8080/api | jq
{
"jsonrpc": "2.0",
"error": {
"code": -32602,
"message": "Invalid params",
"data": {
"detail": "TypeError: ping() got an unexpected keyword argument 'key'",
"request": {
"jsonrpc": "2.0",
"method": "ping",
"params": {
"key": "value"
},
"id": 1
}
}
},
"id": 1
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
osjsonrpc-0.1.3.tar.gz
(4.7 kB
view hashes)
Built Distribution
Close
Hashes for osjsonrpc-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dc7ffd5982c776b16772f5da9d8336fcd624dc91feeff6775e4c4dcf663313f |
|
MD5 | 8ca87f421defba8e03eaabad53f1d596 |
|
BLAKE2b-256 | cdc81eab44d588be2be3e62271027ece276173934a65e25edb224c9e2d638444 |