主要作路由,限流,鉴权等接入放行性质的工做python
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"}
操做顺序spa