ApiTemplate.py 1.5 KB
# coding=utf-8
#author:        4N
#createtime:    2021/5/18
#email:         nheweijun@sina.com
from app.util.component.ParameterUtil import ParameterUtil
from flask import current_app,request
import traceback
import json
from app.modules.auth.models import OAuth2Token,User,db

class ApiTemplate:
    #模板方法
    para = dict()
    api_doc = dict()
    api_name="[未命名]"
    def __init__(self):
        pass

    def get_para(self):
        self.para = ParameterUtil.get_parameter()
        token = request.headers.get('Authorization')
        if token:
            token = token.split(" ")[-1]
            user = User.query.join(OAuth2Token).filter(OAuth2Token.access_token == token).one_or_none()
            if user:
                self.para["creator"] = user.username

    def para_check(self):
        pass
    def process(self):
        pass
    def log(self):
        ip = request.remote_addr
        current_app.logger.info("[{}][{}]调用了:{},参数为:{}".format(ip,self.para.get("creator","非法用户"),self.api_name,json.dumps(self.para,ensure_ascii=False)))
    # 接口模板
    @property
    def result(self):
        try:
            self.get_para()
            self.para_check()
            self.log()
            res = self.process()
        except Exception as e:
            res=dict()
            res["result"]=False
            res["msg"]=e.__str__()
            current_app.logger.error(e.__str__()+":"+ traceback.format_exc())
        return res