组件
- 接入类
- 映射类
- 动作类
接入类
主要做路由,限流,鉴权等接入放行性质的工作
class App:
action_map = {}
def dispatch(self, data):
try:
assert data["action"] in self.action_map, ErrorCode.sys_action_not_exist
action = self.action_map[data["action"]]
return {
"code": 0,
"msg": "",
"data": action.run(data["params"])
}
except AssertionError as e:
msg, code = e
return {
"code": code,
"msg": msg,
"data": None
}
except Exception:
traceback.print_exc()
msg, code = ErrorCode.sys_unknown
return {
"code": code,
"msg": msg,
"data": None
}
映射类
名称到动作类的映射
action_map = {
'register': RegisterAction
}
动作类
表达一个接口的实际业务逻辑操作,权限,数据schema都在这里进行配置
class RegisterAction(Action):
schema = Schema({
"verify_code": And(str, len),
"phone": And(str, len),
"password": And(str, len)
})
auth = False
def run(self, data):
assert check_verify_code(data["verify_code"]), MyErrorCode.verify_code_wrong
assert User.get(data["phone"]), MyErrorCode.already_register
return {"token": "token"}
业务逻辑
操作顺序
- 数据结构与格式验证,validate
- 数据正确性验证,如验证码,密码等,check
- 数据存在性验证,exist
- 数据业务状态验证,status
- 数据业务更改操作并提交至数据库,run
- 返回成功,return