flask restful 接口统一Json格式响应返回

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的整体结构

 

posted @ 2024-05-19 15:30  Misterj  阅读(481)  评论(0)    收藏  举报