1.创建接口统一的返回格式 json_response.py文件
# -*- coding: utf-8 -*-
from flask import make_response, jsonify
class JsonResponse(object):
"""
统一的json返回格式
"""
def __init__(self, data, code, msg):
self.data = data
self.code = code
self.msg = msg
@classmethod
def success(cls, data=None, code=1, msg='success'):
# return jsonify(cls(data, code, msg).__dict__) to_dict()方法也可以
return jsonify(cls(data, code, msg).to_dict())
@classmethod
def error(cls, data=None, code=-1, msg='error'):
return jsonify(cls(data, code, msg).to_dict())
def to_dict(self):
return {
"code": self.code,
"msg": self.msg,
"data": self.data
}
# def to_response(self):
# response_data = self.to_dict()
# response = make_response(jsonify(response_data))
# response.headers['Content-Type'] = 'application/json'
# return response
2.app.py文件的代码
from flask import request, Flask
from flask_restful import Resource, Api
from flask_cors import CORS
from common.json_response import JsonResponse
app = Flask(__name__)
# 跨域
CORS(app, supports_credentials=True)
# flask_restful 使用restful api
api = Api(app)
@app.route('/')
def hello_world():
# json_response.py的JsonResponse类的success方法调用
return JsonResponse.success('Hello World')
class FlaskJsonDataResource(Resource):
def get(self):
json={'JsonData': 'JsonData'}
# json_response.py的JsonResponse类的success方法调用
# success方法的data参数可以接收 string、list、dict等类型的数据
return JsonResponse.success(json)
def post(self):
try:
data = request.get_json()
id = data["id"]
# json_response.py的JsonResponse类的success方法调用
return JsonResponse.success(data=id)
except Exception as e:
return JsonResponse.error(msg=str(e))
api.add_resource(FlaskJsonDataResource, '/api/FlaskJsonData')
@app.errorhandler(Exception)
def error_handler(e):
"""
全局异常捕获,也相当于一个视图函数
"""
return JsonResponse.error(msg=str(e))
if __name__ == '__main__':
app.run()
3.flask的整体结构
参考资料如下: