A flask/quart extension to provide schema validation with pydantic.
Project description
schema-validator
Generate from quart-schema
Install
pip install schema-validator
How to use
from dataclasses import dataclass
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
from flask import Flask
from schema_validator import FlaskSchema, validate
app = Flask(__name__)
FlaskSchema(app)
OR
schema = FlaskSchema()
schema.init_app(app)
@dataclass
class Todo:
task: str
due: Optional[datetime]
class TodoResponse(BaseModel):
id: int
name: str
@app.post("/")
@validate(body=Todo, responses=TodoResponse)
def create_todo():
# balabala
return dict(id=1, name="2")
@app.get("/")
@validate(
query=Todo,
responses={200: TodoResponse, 400: TodoResponse}
)
def update_todo():
# balabala
return TodoResponse(id=1, name="123")
@app.delete("/")
@validate(
body=Todo,
responses={200: TodoResponse}
)
def delete():
# balabala
return jsonify(id=1)
@tags("SOME-TAG", "OTHER-TAG") # only for swagger
class View(MethodView):
@validate(...)
def get(self):
return {}
How to show the swagger
app.config["SWAGGER_ROUTE"] = True
http://yourhost/swagger/docs -> show the all swagger
http://yourhost/swagger/docs/{tag} -> show the swagger which include tag
How to export the swagger
add command in flask:
app.cli.add_command(generate_schema_command)
Export all swagger to json file:
- flask schema -o swagger.json
Export the swagger which include the ACCOUNT tag:
- flask schema -o swagger.json -t ACCOUNT
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
schema_validator-0.2.4.tar.gz
(9.9 kB
view hashes)
Built Distribution
Close
Hashes for schema_validator-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dc5589bc4d848b770a91ce5833e4f6fa27670dbebc4315ccb59140c12e8a1c2 |
|
MD5 | bde7c53221fb174cb5049ed4eecc4a13 |
|
BLAKE2b-256 | 89f81a04767aabeb4725d6e47f6dd9ecf0af91726dd2897012371b3c90a5016f |