A Quart extension to provide schema validation
Project description
Quart-Schema is a Quart extension that provides schema validation and auto-generated API documentation. This is particularly useful when writing RESTful APIs.
Quickstart
To add validation to an existing Quart route simply decorate it with validate_request and validate_response, with the relevant (Pydantic) dataclass objects,
from datetime import datetime
from typing import Optional
from pydantic.dataclasses import dataclass
from quart import Quart
from quart_schema import QuartSchema, validate_request, validate_response
app = Quart(__name__)
QuartSchema(app)
@dataclass
class Todo:
task: str
due: Optional[datetime]
@app.route("/", methods=["POST"])
@validate_request(Todo)
@validate_response(Todo, 201)
async def create_todo(data: Todo) -> Todo:
... # Do something with data, e.g. save to the DB
return data, 201
The documentation UI will be served by default at /docs from the openapi definition at /openapi.json.
Quart-Schema also allows validation of JSON data sent and received over websockets, although at present there is no standard to document this,
from datetime import datetime
from typing import Optional
from pydantic.dataclasses import dataclass
from quart import Quart
from quart_schema import QuartSchema, websocket
app = Quart(__name__)
QuartSchema(app)
@dataclass
class Todo:
task: str
due: Optional[datetime]
@app.websocket("/ws")
async def create_todo() -> 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)
Contributing
Quart-Schema is developed on GitLab. 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.
Testing
The best way to test Quart-Schema is with Tox,
$ pip install tox
$ tox
this will check the code style and run the tests.
Help
The Quart-Schema documentation is the best places to start, after that try searching stack overflow or ask for help on gitter. If you still can’t find an answer please open an issue.
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.
Source Distribution
Built Distribution
Hashes for quart_schema-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00748ee13383ad18ae9fbc6edd4b56c18085d08b09905c78c1ed8ce8867f28fa |
|
MD5 | 55dcc286aecd7a38019b31cdf29e196a |
|
BLAKE2b-256 | 2d88c8f564a251d7a918592ae14b3484746579f9dff25e37a6fe133038d5b83c |