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

参考资料如下:

https://blog.csdn.net/mouday/article/details/122014783

https://blog.csdn.net/qq_44906497/article/details/134807655

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值