import logging from flask import jsonify, request, make_response, abort from marshmallow import ValidationError logger = logging.getLogger(__name__) # 处理404错误 def page_not_found(e): # if a request is in our blog URL space if request.path.startswith('/blog/'): # we return a custom blog 404 page return jsonify({ "code": e.code, "message": e.name, "description": e.description, "data": "" }), 404 else: # otherwise we return our generic site-wide 404 page return jsonify({ "code": e.code, "message": e.name, "description": e.description, "data": "" }), 404 # 处理405错误 def method_not_allowed(e): # otherwise we return a generic site-wide 405 page return jsonify({ "code": e.code, "message": e.name, "description": e.description, "data": "" }), 405 # 处理其他400错误 def exception_400(e): # otherwise we return a generic site-wide 405 page return jsonify({ "code": e.code, "message": e.name, "description": e.description, "data": "" }), 400 # 处理其他状态码错误 def exception_500(e): print(e) return jsonify({ "code": e.code, "message": e.name, "description": e.description, "data": "" }), e.code # 处理参数校验错误 def check_data(schema, data): try: return schema().load(data) except ValidationError as e: abort(make_response(jsonify(code=400, message=str(e.messages), data=None), 400))