在flask中支持数据校验和openapi(swagger)文档自动生成
flask_docs fork自flask-siwadoc,感谢原作者提供了主要功能的实现,原项目不支持flask中blueprint的使用因此魔改
需要通过CreateDoc(app)
,利用装饰器 siwa.doc()
修饰flask视图函数,即可将该视图对应的路由加入openapi的paths中。
可以将请求参数放置在 query
、path
、header
、cookie
、body
5种不同的地方,完全支持openapi规范所定义的5种参数方式。
基于pydantic
,请求参数可自动转换为对应的数据类型
内置了swagger
(默认)、redoc
、rapidoc
等多种UI界面,通过query参数"ui"控制
pip install as-flask-docs
from flask import Flask
from flask_docs import CreateDoc
app = Flask(__name__)
models = {}
modules = import_module('tests.bps')
for name in dir(modules):
instance = getattr(modules, name)
if isinstance(instance, Blueprint):
app.register_blueprint(instance)
if isinstance(instance, Docs):
models.update(instance.models)
CreateDoc(app, title="flask_docs", description="一个自动生成openapi文档的库", models=models)
from flask import Blueprint
from flask_siwadoc import Docs
from pydantic import BaseModel
test1 = Blueprint("t1", __name__, url_prefix="/api/t1")
d = Docs(tags=["1"])
class A(BaseModel):
a: int = 1
@test1.get('')
@d(body=A)
def fun(body: A):
return 't1'
运行后,访问 http://127.0.0.1:5000/docs 就可以看到openapi文档页面