实现自定义嵌套蓝图
解决Flask原生蓝图无法实现更小范围的模块化
方法图解
创建一个文件,在其中自定义嵌套蓝图,继承于flask的原生Blueprint,主要实现在register_blueprint方法中
然后在父模块上使用嵌套蓝图,记得也要把该蓝图在flask的app中注册
最后在子模块下使用flask的原生蓝图,并把它注册在嵌套蓝图NestableBlueprint上
这样,url访问的格式就是这样:http://xxx.xxx.xxx:xxxx/api/v1/team/xxx
父蓝图的“/api/v1”和子蓝图的“/team”,都在1图的重写方法中实现了拼接
最后
我是应用在flask-restful框架中,而在api开发中也可以选择flask-restplus,也实现了更小的模块化的功能namespace,自带swagger,但我个人觉得有挺多坑的,折腾一段时间还是换回了flask-restful
该技巧出自于flask issue中关于嵌套蓝图的讨论@teozkr ,感谢他的分享,
github讨论地址:https://github.com/pallets/flask/issues/593