aiohttp.web OpenAPI 3 schema first server applications.
Project description
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.
- Works on Python 3.6+
- Works with aiohttp.web 3.7+
- BSD licensed
- Source, issues, and pull requests on GitHub
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 ( openapi_context, OperationTableDef, setup_openapi, ) operations = OperationTableDef() @operations.register async def hello_world(request: web.Request) -> web.Response: with openapi_context(request) as context: name = context.parameters.query.get("name", "world") return web.json_response({"message": f"Hello, {name}!"}) def create_app(argv: List[str] = None) -> web.Application: return setup_openapi( web.Application(), Path(__file__).parent / "openapi.yaml", operations, server_url="/api", )
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,
@operations.register 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.
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.