Flask toolkits to boost your development and simplify flask, its featured with AutoSwagger
Project description
Flask Toolkits
Repository
Installation
pip install flask-toolkits
Description
Flask toolkits implements and provides several features from FastAPI
like:
- Automatic API documentation (define the function and we'll generate the
swagger
/openapi
spec for you) - Passing parameters through
view
/router
function which is unable inFlask
before - Easy Middleware setup
- Parameters and schema validation using
Pydantic
- Response classes that could return any type of data without worried to get error
- much more..
Changelogs
- v0.0
- First Upload
- v0.1
- Integration with flask-http-middleware
- pydantic support for JSON arguments and validation
- Multiple response type generator
- Added
JSONResponse
class to replacejsonify
roles in send dictionary data with encoding improvements.
- v0.2
- Supported enumeration API documentation
- Added support for type hint from
typing
's generic (ex:Optional
,Union
,List
) - Fixed input parameter validations
- v0.3
- Support
File
andForm
input parameters validation and automatic swagger. - Added constraint feature for parameters (ex: limit, max/min length, greater/less than, equals than etc)
- Support
Key Tools inside this toolkit
- Automatic API documentation (
swagger
/openapi
) - Request-Response direct HTTP middleware (
flask-http-middleware
) - Automatic parameters validation (
pydantic
) - Response generator (JSON, Plain Text, HTML)
Automatic Parameters Validation
The original Blueprints
class from flask
can't insert most of arguments inside endpoint.
Here our APIRouter
allows you to have arguments inside your endpoint
from typing import Optional
from flask_toolkits import APIRouter, Body, Header, Query
from flask_toolkits.responses import JSONResponse
router = APIRouter("email", import_name=__name__, static_folder="/routers/email", url_prefix="/email")
@router.post("/read", tags=["Email Router])
def get_email(
id: int,
name: Optional[str],
):
return JSONResponse({"id": id, "name": name})
AUTOMATIC API DOCUMENTATION
Here our APIRouter
allows you to auto-documenting your endpoint through AutoSwagger
.
Define the new router using APIRouter
class, lets put it in another pyfile
email_view.py
from typing import Optional
from flask_toolkits import APIRouter, Body, Header, Query
from flask_toolkits.responses import JSONResponse
router = APIRouter("email", import_name=__name__, static_folder="/routers/email", url_prefix="/email")
@router.post("/read", tags=["Email Router])
def get_email(
id: int = Body(...),
name: Optional[str] = Body(...),
token: int = Header(...),
race: Optional[str] = Query(None)
):
return JSONResponse({"id":id, "name": name})
main.py
from flask import Flask
from flask_toolkits import AutoSwagger
from email_view import router as email_router
app = Flask(__name__)
auto_swagger = AutoSwagger()
app.register_blueprint(email_router)
app.register_blueprint(auto_swagger)
if __name__ == "__main__":
app.run()
then you can go to http://localhost:5000/docs
and you will found you router is already documented
Request-Response direct HTTP middleware
import time
from flask import Flask
from flask_toolkits.middleware import MiddlewareManager, BaseHTTPMiddleware
app = Flask(__name__)
class MetricsMiddleware(BaseHTTPMiddleware):
def __init__(self):
super().__init__()
def dispatch(self, request, call_next):
t0 = time.time()
response = call_next(request)
response_time = time.time()-t0
response.headers.add("response_time", response_time)
return response
app.wsgi_app = MiddlewareManager(app)
app.wsgi_app.add_middleware(MetricsMiddleware)
@app.get("/health")
def health():
return {"message":"I'm healthy"}
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
File details
Details for the file flask-toolkits-0.3.1.tar.gz
.
File metadata
- Download URL: flask-toolkits-0.3.1.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b05dae3e819768b603312b1fb4fcff5d755ecf9afb9bdda410dd7975c8fccaa5 |
|
MD5 | 1ccc8f6ce14a9f4d0f5193d90ce77d18 |
|
BLAKE2b-256 | 840e45b4324f0289fd643f38bc231ba2f910010d810c027b98edd7aa3de6baf6 |
File details
Details for the file flask_toolkits-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: flask_toolkits-0.3.1-py3-none-any.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb94e2702f078665e249bbe340edce12b226df7750720cb4bc7d1707bd14eec7 |
|
MD5 | ce510a7c6142a7d046aee3fbd70c1dec |
|
BLAKE2b-256 | ec358ad3aef2efde526c33d981c7c27b2a511f9aed7d4afb365acd51157943ae |