1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| from flask import Flask from flask_restful import Api, Resource
app = Flask(__name__)
# 1.将app对象包装创建api对象 [用于管理类视图(资源)] api = Api(app)
""" 需求: { "name": "james", "team": "lakers" }
定制返回的json格式: { "message": "OK" 或 "ERROR Message", "data": { "name": "james", "team": "lakers" } }
方案1:修改底层output_json的源代码 [不推荐] # json定制化 if "message" not in data: data = { "message": "OK", "data": data }
方案2:使用装饰器拦截返回的字典,定制json格式,返回响应 [推荐] """ from utils import output_json # 主动寻求装饰 api.representation(mediatype="application/json")(output_json)
# 2.定义类视图 继承Resource class DemoResource(Resource):
def get(self): # 类视图响应的content-type默认变为json形式 # 类视图的返回值可以是字典, 会被自动转为json字符串 my_dict = { "name": "james", "team": "lakers" } return my_dict
def post(self): my_dict = { "name": "james", "team": "lakers", "message": "invalid user" } return my_dict
# 3.api对象给类视图添加路由 api.add_resource(DemoResource, '/')
if __name__ == '__main__': print(app.url_map) app.run(debug=True)
|