




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第flask路由分模块管理及自定义restful响应格式详解目录一、flask路由分模块管理1.1、使用蓝图1.2、使用flask_restful二、自定义flask_restful响应格式
一、flask路由分模块管理
1.1、使用蓝图
在flask中可以使用蓝图Blueprint来进行创建路由进行分模块。具体操作,我们可以在项目根目录下创建一个controller文件夹来存储分模块的路由。
在controller文件夹里创建product_controller.py,在里面如下写法引入蓝图,并且注册蓝图:
fromflaskimportBlueprint
product_blue=Blueprint('product',__name__)
#定义蓝图路径及请求方法和请求返回逻辑
@product_blue.route('/get',methods=['get','post'])
defgetproduct():
return'product'
@product_blue.route('/search',methods=['get','post'])
defsearchproduct():
return'search'
那么我们在项目主逻辑文件main.py中,去引入并注册这个蓝图:
fromflaskimportFlask
fromduct_controllerimportproduct_blue
app=Flask(__name__)
#商品模块
app.register_blueprint(product_blue,url_prefix='/product')
if__name__=='__main__':
app.run()
接下来我们运行程序,可以看到如下效果:
可以看到我们使用蓝图分模块的创建已经生效了,这样如果模块对的话,我们就方便管理了。不会造成代码全部冗余在一个主文件中。
1.2、使用flask_restful
那么相比与蓝图Blueprint,flask_restful的优势就在于它能够做更多的操作,比如参数的验证,返回直接字典就能解析成json。
首先我们输入命令pip3installflask_restful安装flask_restful。在product_controller中写入如下代码:
fromflask_restfulimportResource,reqparse
classProductView(Resource):
@staticmethod
defpost():
parse=reqparse.RequestParser()
parse.add_argument('product_id',type=str,help='商品id必传',required=True,trim=True)
args=parse.parse_args()
product_id=duct_id
return{
'msg':'商品id是'+product_id,
'code':200
@staticmethod
defget():
return{
'msg':'商品',
'code':200
那么main.py主文件中修改如下:
fromduct_controllerimportProductView
app=Flask(__name__)
api=Api(app)
api.add_resource(ProductView,'/product',endpoint='product')
if__name__=='__main__':
app.run()
现在已经是restful形式的api了,我们采用apifox或者postman测试请求接口如下:
可以看到get请求成功,但是在post请求时,我们没有传必传参数,所以出现了报错。我们尝试将必传参数加上:
那么可以看到将必传的参数加上后,请求成功。两种模式可以共存,但是一般我们只用一种就行了。
相信细心的小伙伴已经发现,失败和成功返回的数据格式不一样,成功有code,失败却没有code,那么我想自定义失败返回的数据格式,将怎么操作呢,接下来自定义flask_restful的错误响应。
二、自定义flask_restful响应格式
在根目录下创建errors.py,写入如下代码:
"""
designthecustomerrorresponseofflask-restful
fromflask_restfulimportabort
defgenerate_response(msg,status):
return{
'code':status,
'msg':msg,
defcustom_abort(http_status_code,*args,**kwargs):
ifhttp_status_code==400:
abort(400,**generate_response(msg=[kwargs.get('message')],status=http_status_code))
abort(http_status_code)
我们将错误状态拎出来自定义返回格式。在main.py主文件中加入这两行代码:
fromerrorsimportcustom_abort
flask_restful.abort=c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CAB 1025-2013汽车塑料(注塑)脚垫
- 2024年微波集成电路AL2O3基片资金筹措计划书代可行性研究报告
- 2024年甲氧基酚资金筹措计划书代可行性研究报告
- 直播销售电子教案 项目七任务一:直播销售数据采集 教案
- 2025年中国变色玻璃行业市场前景预测及投资价值评估分析报告
- 2025年嵌入式考试政策解读试题及答案
- 高端体育赛事品牌赞助全面合作协议
- 抖音火花汽车行业品牌合作共赢合同
- 虚拟偶像IP与动漫产业联合开发合同
- 2025年中国保险杠行业市场前景预测及投资价值评估分析报告
- 浙江省杭州市滨江区2022-2023学年七年级下学期期末语文试卷(含答案)
- 诚信教育主题班会
- 成都医学院辅导员考试真题2022
- 氯磺化聚乙烯生产工艺技术
- 桐庐县2023年三下数学期末综合测试试题含解析
- 装饰施工阶段安全检查表完整
- 数值课件第章非线性方程求根
- TEC-5600除颤操作培训
- 苏科版二年级下册劳动第7课《做皮影》课件
- 芯片手册盛科sdk用户开发指南
- SH/T 0659-1998瓦斯油中饱和烃馏分的烃类测定法(质谱法)
评论
0/150
提交评论