Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pgjones/quart-schema
Quart-Schema is a Quart extension that provides schema validation and auto-generated API documentation.
https://github.com/pgjones/quart-schema
quart
Last synced: about 1 month ago
JSON representation
Quart-Schema is a Quart extension that provides schema validation and auto-generated API documentation.
- Host: GitHub
- URL: https://github.com/pgjones/quart-schema
- Owner: pgjones
- License: mit
- Created: 2022-04-06T19:30:51.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-02T08:24:30.000Z (4 months ago)
- Last Synced: 2024-08-04T01:26:50.228Z (4 months ago)
- Topics: quart
- Language: Python
- Homepage:
- Size: 233 KB
- Stars: 73
- Watchers: 2
- Forks: 24
- Open Issues: 18
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- License: LICENSE
Awesome Lists containing this project
- awesome-pydantic - Quart-Schema - Quart-Schema is a Quart extension that provides schema validation and auto-generated API documentation. (Web)
- awesome-pydantic - Quart-Schema - Quart-Schema is a Quart extension that provides schema validation and auto-generated API documentation. (Web)
README
Quart-Schema
============|Build Status| |docs| |pypi| |python| |license|
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 use either `msgspec
`_ or `pydantic
`_ to validate.Quickstart
----------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... code-block:: python
from dataclasses import dataclass
from datetime import datetimefrom quart import Quart, websocket
from quart_schema import QuartSchema, validate_request, validate_responseapp = 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, or
``/scalar`` for a `Scalar `_
interface. Note that there is currently no documentation standard for
WebSockets.Contributing
------------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
`_.Testing
~~~~~~~The best way to test Quart-Schema is with `Tox
`_,.. code-block:: console
$ pip install tox
$ toxthis 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
`_... |Build Status| image:: https://github.com/pgjones/quart-schema/actions/workflows/ci.yml/badge.svg
:target: https://github.com/pgjones/quart-schema/commits/main.. |docs| image:: https://img.shields.io/badge/docs-passing-brightgreen.svg
:target: https://quart-schema.readthedocs.io.. |pypi| image:: https://img.shields.io/pypi/v/quart-schema.svg
:target: https://pypi.python.org/pypi/Quart-Schema/.. |python| image:: https://img.shields.io/pypi/pyversions/quart-schema.svg
:target: https://pypi.python.org/pypi/Quart-Schema/.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg
:target: https://github.com/pgjones/quart-schema/blob/main/LICENSE