Skip to main content

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
}

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.2.3.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

osjsonrpc-0.2.3-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file osjsonrpc-0.2.3.tar.gz.

File metadata

  • Download URL: osjsonrpc-0.2.3.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.3 CPython/3.6.9 Darwin/19.3.0

File hashes

Hashes for osjsonrpc-0.2.3.tar.gz
Algorithm Hash digest
SHA256 39a20fac621bd5f7538d6baa40f8fb7c91863e2d4b0539aedb33430a85f0b96d
MD5 aa22bff4377f4e5b533170bc82c839a5
BLAKE2b-256 770a85ad2e427f350a7e6cac8dc49cf23f2a5416c02fa9225628584ba737fdd3

See more details on using hashes here.

File details

Details for the file osjsonrpc-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: osjsonrpc-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.3 CPython/3.6.9 Darwin/19.3.0

File hashes

Hashes for osjsonrpc-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 df9397d09c57b072acd82988eb11b78495a55f09cf39ad35fb03f4d3c52bab3b
MD5 724d6c3267e052779868c80c0b89ba0d
BLAKE2b-256 ea405d7455d6b043b1ec1812e3cbd3d0e980d5f3e808ccf4c8abdaa54ca7fc4b

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 files

0.2.0

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page