CI Workflow pre-commit black Latest Version Python versions BSD License Coverage Documentation

Implement aiohttp.web OpenAPI 3 server applications with schema first approach.

As well as bunch other utilities to build effective server applications with Python 3 & aiohttp.web.

Quick Start#

rororo relies on valid OpenAPI 3 schema file (both JSON or YAML formats supported).

Example below, illustrates on how to handle operation hello_world from openapi.yaml schema file.

from pathlib import Path
from typing import List

from aiohttp import web
from rororo import (

operations = OperationTableDef()

async def hello_world(request: web.Request) -> web.Response:
    with openapi_context(request) as context:
        name = context.parameters.query.get("name", "world")
        email = context.parameters.query.get(
            "email", ""
        return web.json_response(
            {"message": f"Hello, {name}!", "email": email}

def create_app(argv: List[str] = None) -> web.Application:
    return setup_openapi(
        Path(__file__).parent / "openapi.yaml",

Schema First Approach#

Unlike other popular Python OpenAPI 3 solutions, such as Django REST Framework, FastAPI, flask-apispec, or aiohttp-apispec rororo requires you to provide valid OpenAPI 3 schema first. This makes rororo similar to connexion, pyramid_openapi3 and other schema first libraries.

Class Based Views#

rororo supports class based views as well. Todo-Backend example illustrates how to use class based views for OpenAPI 3 servers.

In snippet below, rororo expects that OpenAPI 3 schema contains operation ID UserView.get,

class UserView(web.View):
    async def get(self) -> web.Response:

More Examples#

Check examples folder to see other examples on how to build aiohttp.web OpenAPI 3 server applications.


poetry add rororo

Or using pip,

pip install rororo


rororo is licensed under the terms of BSD-3-Clause License.