A Quart extension to provide schema validation
Quart-Schema is a Quart extension that provides schema validation and auto-generated API documentation. This is particularly useful when writing RESTful APIs.
Quart-Schema can validate an existing Quart route by decorating it with validate_querystring, validate_request, or validate_response. It can also validate the JSON data sent and received over websockets using the send_as and receive_as methods.
from dataclasses import dataclass from datetime import datetime from quart import Quart, websocket from quart_schema import QuartSchema, validate_request, validate_response app = Quart(__name__) QuartSchema(app) @dataclass class Todo: task: str due: datetime | None @app.post("/") @validate_request(Todo) @validate_response(Todo, 201) async def create_todo(data: Todo) -> tuple[Todo, int]: ... # Do something with data, e.g. save to the DB return data, 201 @app.websocket("/ws") async def ws() -> None: while True: data = await websocket.receive_as(Todo) ... # Do something with data, e.g. save to the DB await websocket.send_as(data, Todo)
The documentation is served by default at /openapi.json according to the OpenAPI standard, or at /docs for a SwaggerUI interface, or /redocs for a redoc interface. Note that there is currently no documentation standard for WebSockets.
Quart-Schema is developed on GitHub. If you come across an issue, or have a feature request please open an issue. If you want to contribute a fix or the feature-implementation please do (typo fixes welcome), by proposing a merge request.
The best way to test Quart-Schema is with Tox,
$ pip install tox $ tox
this will check the code style and run the tests.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for quart_schema-0.18.0-py3-none-any.whl