博客系列:flask-restful 中Resource封裝方法

  • 分享一個前後端分離(Python3 + Flask +Vuew)的個人博客,一個使用Python Flask 框架編寫的個人博客。項目很輕。卻很實用。
  • GitHub地址:哆啦瞎夢
  • 技術棧:Flask、Vue、Docker
  • 初始化,項目結構我就不再寫了,之前寫過了,沒有的可以看我之前的文章。或者直接私信我,我特地準備了一個乾淨的模板

flask-restful 不做果斷解釋

# 在flask_app>restful_api_manage中創建一個base.py
from flask import request
from flask_restful import Resource
# 同一錯誤集中處理
from common.error import AppError, NotFoundError, UnauthorizedError, ValidationError, ParaValidateFailError, \
    MoreValidationError, UnauthorizeError
# 統一方法返回的
from flask_app.restful_api_manage.hepler import error_response_default, unauthorized_response

class BaseErrorHandler(Resource):
    """
    註冊錯誤管理機制
    get/post/delete/patch/put/head
    """
def base_error_check(handler, handler_func):
    def _check(*args, **kwargs):
        added_error_instances = (
        AppError, NotFoundError, UnauthorizedError, ValidationError, ParaValidateFailError, MoreValidationError)
        try:
            ret = handler_func(*args, **kwargs)
        except added_error_instances as e:
            code = getattr(e, "code", 500)
            code = 500 if code < 200 else code
            return error_response_default(handler, code, e.msg, e.error_code)
        else:
            return ret
    return _check

def __init__(self):
    if hasattr(self, 'get'):
        self.get = base_error_check(self, self.get)
    if hasattr(self, 'post'):
        self.post = base_error_check(self, self.post)
    if hasattr(self, 'delete'
        self.delete = base_error_check(self, self.delete)
    if hasattr(self, 'patch'):
        self.patch = base_error_check(self, self.patch)
    if hasattr(self, 'put'):
        self.put = base_error_check(self, self.put)
    if hasattr(self, 'head'):
        self.head = base_error_check(self, self.head)


class BaseModelHandler(BaseErrorHandler):
    def __init__(self):
        super(BaseModelleHandler, self).__init__()
  • 這一塊主要是對Resource封裝了一個方法 捕捉錯誤異常格式化返回數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章