Quickstart#
Lets take a simple Todo example, whereby we want to define a Todo
object to be validated,
schema.py#
from dataclasses import dataclass
from datetime import datetime
from quart import Quart
from quart_schema import QuartSchema, validate_request, validate_response
app = Quart(__name__)
QuartSchema(app)
@dataclass
class Todo:
task: str
due: datetime | None
@app.route("/", methods=["POST"])
@validate_request(Todo)
@validate_response(Todo, 201)
async def create_todo(data: Todo) -> tuple[Todo, int]:
"""Create a Todo"""
# Do something with data, e.g. save to the DB
...
return data, 201
and is simply run via
python schema.py
or alternatively
$ export QUART_APP=schema:app
$ quart run
and tested by
curl -v -H "content-type: application/json" -d '{"due":"2020-12-08T11:19:35.818445","task":"Build an example"}' localhost:5000/
with the docs available at
localhost:5000/docs
or
localhost:5000/redocs