python-flask 模拟蓝图Blueprint原理编写红图Redprint的代码
redprint.py文件
# 模拟蓝图Blueprint源代码编写Redprint
class Redprint:def __init__(self,name):self.name = nameself.args = []#和蓝图route方法一样def route(self, rule,**options):def decorator(f):self.args.append((rule,f,options))return freturn decorator# 和蓝图register方法一样def register(self, bp, url_prefix=None):prefix = ""#注册路由路径的前缀部分if not url_prefix:url_prefix = '/'+self.namefor rule,f,options in self.args:endpoint = options.pop("endpoint", f.__name__)bp.add_url_rule(url_prefix+rule, endpoint, f, **options)
main.py文件
务必注意:api路径=蓝图前缀url_prefix+红图前缀url_prefix+"/register"
最终路由路径为:http:localhost:8099/v1/user_api/registerfrom flask import Blueprint
from flask import Flask
app = Flask(__name__)#创建红图对象
user_api = Redprint("user_api")#把红图注册到蓝图对象中
user_api.register(blueprint_v1,url_prefix="/user_api")#创建蓝图对象
blueprint_v1 = Blueprint("api", __name__)#把蓝图对象注册到app中
app.register_blueprint(blueprint_v1, url_prefix="/v1")#红图api函数
@user_api.route("/register", methods=["POST"])
def register():
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!