-
Notifications
You must be signed in to change notification settings - Fork 29
/
demo_flask_blueprint_swagger.py
74 lines (57 loc) · 2.23 KB
/
demo_flask_blueprint_swagger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from fishbase.swagger import doc
from fishbase.swagger.swagger import flask_swagger
from flask import Blueprint, Flask
# 创建 Flask app
app = Flask("Demo Server")
# Swagger 可以从 app 中读取配置信息
app.config.update({
"API_VERSION": "v1.0.0",
"NAME": "Demo Server",
"API_DESCRIPTION": "Demo Server"
})
# 创建 Flask 蓝图
APPBlueprint = Blueprint(name='', import_name=__name__)
class AddXxReqVo:
"""
新增 Xx 请求 Vo
"""
name: str
age: int
class UpdateXxReqVo:
"""
更新 Xx 请求 Vo
"""
name: str
age: int
@doc.summary("xx业务查询接口", group="xx业务")
@doc.description("测试 Swagger 使用, 实例采用蓝图的方式, 参数为 URL 参数 token, 且必传")
@doc.consumes("token", required=True)
def test_query():
pass
@doc.summary("xx业务新增接口", group="xx业务")
@doc.description("测试 Swagger 使用, 实例采用蓝图的方式, 参数为 URL 参数 token, 且必传和 AddXxReqVo 中的参数")
@doc.consumes(AddXxReqVo, location="body")
@doc.consumes("token", required=True)
def test_add():
pass
@doc.summary("xx业删除增接口", group="xx业务")
@doc.description("测试 Swagger 使用, 实例采用蓝图的方式, 参数为 URL 参数 token, 且非必传")
@doc.consumes("token", required=False)
def test_del():
pass
@doc.summary("xx业务更新接口", group="xx业务")
@doc.description("测试 Swagger 使用, 实例采用蓝图的方式, 参数为 URL 参数 token, 且必传")
@doc.consumes(UpdateXxReqVo, location="body")
@doc.consumes("token", required=True)
def test_update():
pass
# 定义路由信息, 并指定路由映射的方法,请求方式等
APPBlueprint.add_url_rule(f'/v1/query', view_func=test_query, methods=['GET'], endpoint='test_func1')
APPBlueprint.add_url_rule(f'/v1/add', view_func=test_add, methods=['POST'], endpoint='test_func2')
APPBlueprint.add_url_rule(f'/v1/del', view_func=test_del, methods=['DELETE'], endpoint='test_func3')
APPBlueprint.add_url_rule(f'/v1/update', view_func=test_update, methods=['PUT'], endpoint='test_func4')
app.register_blueprint(APPBlueprint)
# 将 app 对象传递给 swagger 模块
flask_swagger(app)
if __name__ == "__main__":
app.run("127.0.0.1", "8899", debug=False)