Minimal OpenAPI asynchronous server application
Project description
aio-openapi
Asynchronous web middleware for Rest APIs with PostgreSql Database.
Installation
pip install aio-openapi
Development
Clone the repository and create a virtual environment venv
.
Install dependencies by running the install script
./dev/install.sh
To run tests
pytest --cov
Features
- Asynchronous web routes with aiohttp
- Data validation, serialization and unserialization with python dataclasses
- OpenApi v 3 auto documentation
- SqlAlchemy expression language
- Asynchronous DB interaction with asyncpg
- Migrations with alembic
- SqlAlchemy tables as python dataclasses
- Click command line interface
Web App
to create an openapi RESTful application:
def create_app():
app = rest(
openapi=dict(
title='A REST API',
...
),
base_path='/v1,
allowed_tags=[...],
validate_docs=True,
setup_app=setup_app,
commands=[...]
)
return app
def setup_app(app):
app.router.add_routes(...)
return app
if __name__ == '__main__':
create_app().main()
Websockets
This library provides a simple distributed websocket utility for creating websocket remote procedure calls (RPC) and pub/sub.
from aiohttp import web
from openapi.ws import Sockets
app = web.Application()
...
app['web_sockets'] = Sockets(app)
RPC protocol
The RPC protocol has the following structure for incoming messages
{
"id": "abc",
"method": "rpc_method_name",
"payload": {
...
}
}
The id
is used by clients to link the request with the corresponding response.
The response for an RPC call is eitrher a success
{
"id": "abc",
"method": "rpc_method_name",
"result": {
...
}
}
or error
{
"id": "abc",
"method": "rpc_method_name":
"error": {
...
}
}
Publish/Subscribe
To subscribe to messages, one need to use the Subscribe
mixin with the subscribe RPC handler.
Messages take the form:
{
"channel": "channel_name",
"event": "event_name",
"data": {
...
}
}
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
Built Distribution
Hashes for aio_openapi-1.2.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f22028ab4c7ad3ce0575307ead37a8a532ec735ce907528a5a1ed20cdbc0154e |
|
MD5 | 619692fd98b0ee88e9a192baf7275741 |
|
BLAKE2b-256 | 4aaddc7c4926876f6f870e1ef650175b0832e708f2fdeb5a897eb3099f98e0f3 |