flask rest
起个项目名称
│ ginger.py 入口
│ Pipfile 安装包
│ Pipfile.lock
│
│
└─app 项目
│ app.py 项目入口
│ __init__.py
│
├─api api
│ │ __init__.py
│ │
│ ├─v1 版本v1
│ │ │ book.py
│ │ │ client.py
│ │ │ user.py
│ │ │ __init__.py 注册蓝图v1
│ │
│
├─config 配置
│ │ secure.py 私密
│ │ setting.py 公共
│ │
│
├─libs 公共类
│ │ enums.py
│ │ redprint.py 红图
│ │ __init__.py
ginger.py 入口
from app.app import create_app app = create_app() if __name__ == '__main__': app.run(debug=True)
Pipfile 安装包
[[source]] url = "https://pypi.python.org/simple" verify_ssl = true name = "pypi" [packages] flask = "==1.0" flask-sqlalchemy = "==2.3.2" flask-wtf = "==0.14.2" cymysql = "==0.9.1" flask-cors = "==2.1.0" flask-httpauth = "==2.7.0" requests = "==2.18.4" [dev-packages] [requires] python_version = "3.5"
app.py 项目入口
from flask import Flask def register_blueprints(app): from app.api.v1 import create_blueprint_v1 app.register_blueprint(create_blueprint_v1(),url_prefix="/v1") def create_app(): app = Flask(__name__) app.config.from_object("app.config.secure") app.config.from_object("app.config.setting") register_blueprints(app) return app
book.py
from app.libs.redprint import Redprint api = Redprint("book") @api.route("/get") def get_book(): return 'i am book'
__init__.py 注册蓝图v1
from flask import Blueprint from app.api.v1 import user,book def create_blueprint_v1(): bp_v1 = Blueprint("v1",__name__) user.api.register(bp_v1) book.api.register(bp_v1) return bp_v1
redprint.py 红图
class Redprint: def __init__(self,name): self.name = name self.mound = [] def route(self,rule,**options): def decorator(f): self.mound.append((f,rule,options)) return f return decorator def register(self,bp,url_prefix=None): if url_prefix is None: url_prefix = "/" + self.name for f,rule,options in self.mound: endpoint = options.pop("endpoint", f.__name__) bp.add_url_rule(url_prefix+rule, endpoint, f, **options)