flask路由分模块管理及自定义restful响应格式详解_第1页
flask路由分模块管理及自定义restful响应格式详解_第2页
flask路由分模块管理及自定义restful响应格式详解_第3页
flask路由分模块管理及自定义restful响应格式详解_第4页
flask路由分模块管理及自定义restful响应格式详解_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论