Skip to main content

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

Uploaded Source

Built Distribution

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.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page