跳转到主要内容

从类型生成模式并验证用户输入

项目描述

https://github.com/aio-libs/aiohttp-apischema/workflows/CI/badge.svg https://codecov.io/gh/aio-libs/aiohttp-apischema/branch/master/graph/badge.svg https://img.shields.io/pypi/v/aiohttp-apischema.svg https://readthedocs.org/projects/aiohttp-apischema/badge/?version=latest

aiohttp.web生成API模式并验证输入。

安装

从PyPI安装

pip install aiohttp-apischema

开发

安装要求和启动测试

pip install -r requirements-dev.txt
pytest

基本用法

首先创建一个SchemaGenerator实例

from aiohttp_apischema import SchemaGenerator
SCHEMA = SchemaGenerator()

然后装饰应包含在模式中的端点处理程序

from aiohttp_apischema import APIResponse

@SCHEMA.api()
async def foo(request: web.Request) -> APIResponse[list[str], Literal[200]]:
    return APIResponse(["foo"])

或者对于基于类的视图

@SCHEMA.api_view()
class Handler(web.View):
    async def get(self) -> APIResponse[int, Literal[200]] | APIResponse[None, Literal[404]]:
        bar_id = int(self.request.match_info["id"])
        if bar_id == 1:
            return APIResponse(42)
        return APIResponse[None, Literal[404]](None, status=404)

然后构建您的应用程序时调用设置方法

app = web.Application()
app.router.add_get("/foo", foo)
app.router.add_view(r"/bar/{id:\d+}", Handler)
SCHEMA.setup(app)

您现在可以在/swagger/路径下查看文档。

验证用法

通过添加位置参数实现请求体的验证

async def handler(request: web.Request, body: dict[int, str]) -> APIResponse[int, Literal[200]]:
    # body has been validated, so we can be sure the keys are int now.
    return APIResponse(sum(body.keys()))

许可证

aiohttp_apischema在Apache 2许可证下提供。

项目详情


下载文件

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

源代码发行版

aiohttp_apischema-0.0.1.tar.gz (3.1 MB 查看哈希值)

上传时间 源代码

构建发行版

aiohttp_apischema-0.0.1-py3-none-any.whl (3.1 MB 查看哈希值)

上传时间 Python 3