跳转到主要内容

aiohttp.web OpenAPI 3 schema first server applications.

项目描述

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

使用schema first方法实现aiohttp.web OpenAPI 3服务器应用程序。

以及其他一系列实用工具,以Python 3和aiohttp.web构建有效的服务器应用程序。

  • 支持 Python 3.8+

  • aiohttp.web 3.8.1+ 兼容

  • BSD 许可

  • 源代码、问题和拉取请求请访问 GitHub

快速入门

rororo 依赖于有效的 OpenAPI 3 规范文件(支持 JSON 或 YAML 格式)。

以下示例展示了如何从 openapi.yaml 规范文件中处理 hello_world 操作。

from pathlib import Path

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")
        email = context.parameters.query.get(
            "email", "world@example.com"
        )
        return web.json_response(
            {"message": f"Hello, {name}!", "email": email}
        )


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

Schema 首选方法

与 Django REST Framework、FastAPI、flask-apispec 或 aiohttp-apispec 等其他流行的 Python OpenAPI 3 解决方案不同,rororo 需要 您首先提供有效的 OpenAPI 3 规范。这使得 rororoconnexionpyramid_openapi3 和其他基于规范的库相似。

基于类的视图

rororo 还支持 基于类的视图Todo-Backend 示例说明了如何使用基于类的视图来构建 OpenAPI 3 服务器。

在下面的代码片段中,rororo 预期 OpenAPI 3 规范包含操作 ID UserView.get

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

更多示例

查看 examples 文件夹,了解如何构建 aiohttp.web OpenAPI 3 服务器应用程序的其他示例。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

rororo-3.3.0.tar.gz (38.4 kB 查看哈希值)

上传时间

构建分布

rororo-3.3.0-py3-none-any.whl (43.8 kB 查看哈希值)

上传时间 Python 3

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误记录 StatusPageStatusPage 状态页面