Skip to main content

JSON-RPC server based on fastapi

Project description

Description

JSON-RPC server based on fastapi:

https://fastapi.tiangolo.com

Installation

pip install fastapi-jsonrpc

Usage

pip install uvicorn
import fastapi_jsonrpc as jsonrpc
from fastapi_jsonrpc import Param
from pydantic import BaseModel

app = jsonrpc.API()

api_v1 = jsonrpc.Entrypoint('/api/v1/jsonrpc')

class MyError(jsonrpc.BaseError):
    CODE = 5000
    MESSAGE = 'My error'

    class DataModel(BaseModel):
        details: str

@api_v1.method(errors=[MyError])
def echo(
    data: str = Param(..., example='123'),
) -> str:
    if data == 'error':
        raise MyError(data={'details': 'error'})
    return data

app.bind_entrypoint(api_v1)

if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app, port=5000, debug=True, access_log=False)

Go to:

http://127.0.0.1:5000/docs

Development

  1. Install poetry

    https://github.com/sdispater/poetry#installation

  2. Install dependencies

    poetry update
  3. Install dephell

    pip install dephell
  4. Regenerate setup.py

    dephell deps convert

Changelog

[0.1.9] Fix usage example (forgotten import of pydantic)

[0.1.8] Push sources to github

[0.1.7]

[0.1.6] Ability to write DataModel class in BaseError class scope

[0.1.5] Add error usage example to README.rst

[0.1.4] Add description to README.rst

[0.1.3] Fix README.rst

[0.1.2] Add usage example to README.rst

[0.1.1] README.rst

[0.1.0] Initial commit

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi-jsonrpc-0.1.9.tar.gz (8.3 kB view hashes)

Uploaded Source

Built Distribution

fastapi_jsonrpc-0.1.9-py3-none-any.whl (7.9 kB view hashes)

Uploaded Python 3

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