网站做301有什么用,ui设计收费标准,广告优化师前景,静态做网站接上文《像SpringBoot一样使用Flask - 4.拦截器》#xff0c;通过拦截器处理一些日志#xff0c;异常、还有统一的响应报文。 统一的目的就是为了让前后端调用请求不会因为各自习惯而随意编写#xff0c;增加技术人员快速上手及代码的可阅读性。 一、定义一个返回类。是不是… 接上文《像SpringBoot一样使用Flask - 4.拦截器》通过拦截器处理一些日志异常、还有统一的响应报文。 统一的目的就是为了让前后端调用请求不会因为各自习惯而随意编写增加技术人员快速上手及代码的可阅读性。 一、定义一个返回类。是不是很像定义java类、构造函数、方法定义 import json
class JsonResponse(object):统一的json返回格式def __init__(self, data, code, msg):self.data dataself.code codeself.msg msgclassmethoddef success(cls, dataNone, code0, msgsuccess):return cls(data, code, msg)classmethoddef error(cls, dataNone, code-1, msgerror):return cls(data, code, msg)def to_dict(self):return {code: self.code,msg: self.msg,data: self.data}def to_json(self):return json.dumps(self , default lambda obj: obj.__dict__ ,sort_keysTrue ,indent4)
二、在原先TestController中写个测试。可以通过jsonify这个函数只是需要自己重复写一个json字符串当作一个对比吧
test_bp.route(/hello)
def hello_world(): # put applications code herereturn jsonify({code: 0, data: Hello World 2024, msg: 查询成功})test_bp.route(/json)
def hello_world_two(): # put applications code herereturn JsonResponse.success(dataHello World 2024, code200, msgsuccess).to_json() 三、运行测试 四、在上面拦截器中可以增加一些自己的统一异常处理 app.errorhandler(Exception)
def error_handler(e):全局异常捕获print(str(e))app.logger.info(str(e))retResponse JsonResponse.error(code500, msgstr(e))return JsonResponse.to_json(retResponse)# 请求进入拦截 对应 after_request 正常返回否则异常就被 errorhandler拦截处理
app.before_request
def pre_request():app.logger.debug(fpath{request.path})app.logger.debug(fargs{dict(request.args)})app.logger.debug(fheaders{request.headers})app.logger.debug(fcookies{dict(request.cookies)})#app.logger.debug(fjson{request.json})