1. 程式人生 > 其它 >flask-restful-響應處理

flask-restful-響應處理

響應處理

1、序列化資料marchal工具,定義字典資料

裝飾器形式marshal_with(fields,envelope='信封')

marshal(data,fields,envelop='')

 1 #Flask-RESTful 響應處理
 2 #1、marshal 序列化資料
 3 from flask import Flask
 4 from flask_restful import Api,Resource,marshal,marshal_with,fields
 5 app = Flask(__name__)
 6 api = Api(app)
 7 #讓後端返回的資料可以序列化
8 class User(object): 9 def __init__(self,user_id,mobile,name): 10 self.user_id = user_id 11 self.mobile = mobile 12 self.name = name 13 #序列化容器 14 resource_data = { 15 'user_id':fields.Integer, 16 'mobile':fields.String, 17 'name':fields.String 18 } 19 20 21
class respResource(Resource): 22 @marshal_with(resource_data,envelope='data') 23 def get(self): 24 #return {'data':'hello'} 25 user = User('2022','13209880988','xh') 26 #return user 27 return marshal(user,resource_data) 28 api.add_resource(respResource,'/index')
29 30 if __name__ == '__main__': 31 app.run(debug=True)

執行結果 使用postman工具

 

2、統一資料的json格式

找到flask-restful原始碼中的output_json函式

重寫返回資料的方法data進行巢狀處理

手動呼叫裝飾器

 1 #統一資料互動的格式:返回json格式
 2 from flask import Flask
 3 from flask_restful import Api,Resource
 4 app = Flask(__name__)
 5 api = Api(app)
 6 
 7 from flask import make_response,current_app
 8 from flask_restful.utils import PY3
 9 from  json import  dumps
10 
11 @api.representation('application/json')
12 def output_json(data,code,headers=None):
13     settings = current_app.config.get('RESTFUL_JSON',{})
14     if 'message' not in data:
15         data = {
16             'message':'OK',
17             'data':data
18         }
19     if current_app.debug:
20         settings.setdefault('indent',4)
21         settings.setdefault('sort_keys',not PY3)
22     dumped = dumps(data,**settings)+"\n"
23 
24     resp = make_response(dumped,code)
25     resp.headers.extend(headers or {})
26     return resp
27 class JsonResource(Resource):
28     def get(self):
29         return {'data':'hello'}
30 api.add_resource(JsonResource,'/')
31 if __name__ == '__main__':
32     app.run()

執行結果