from framework.main_framework import Response, main_function from framework.requests_dataclass import SampleRequests from dataclasses import dataclass from dataclasses import asdict from flask import Blueprint from flask import request from framework.mysql_cli import MysqlCliV3 from framework.response_code import RequestMethods @dataclass class OverrideSampleRequestParams(SampleRequests): """ 创建POST请求参数 """ def __init__(self): if request.method == "GET": super(OverrideSampleRequestParams, self).__init__(json_data=request.args, methods=RequestMethods.GET) if request.method == "POST": super(OverrideSampleRequestParams, self).__init__(json_data=request.get_data(), methods=RequestMethods.POST) @dataclass class ResponseInterface: """ 返回的内容 """ def convert_to_dict(self) -> dict: """ 调用这个函数将ResponseInterface数据类转成字典类型的数据 :return: dict """ return asdict(self) class OverrideMysqlCli(MysqlCliV3): """ 创建Mysql操作类 """ def __init__(self): super().__init__() self.token_table = "accounts_info" def handle_search_token_valid(self, username: str, user_token: str) -> None: # 验证登录token sql = f""" SELECT username FROM {self.token_table} WHERE username = '{username}' AND user_token = '{user_token} AND 1=1' """ self.create_sql(sql) mysql_result: dict = self.fetchone() self.check_mysql_exception(mysql_result=mysql_result) self.check_mysql_response_null(mysql_result=mysql_result) class OverriderMainResponse(Response): """ 主要处理请求的类 """ def __init__(self): super(OverriderMainResponse, self).__init__() # self.is_connect_mysql = connect_mysql self.mysql_cli: MysqlCliV3 = MysqlCliV3() self.set_connect_mysql(mysql_cli=self.mysql_cli) def core(self) -> None: """ 重写core函数处理核心内容 例如数据查询/数据处理 """ params = OverrideSampleRequestParams() """ 处理完核心内容后将 handle_success 设置为True self.handle_success = True """ self.set_handle_success(handle_success=True) def before_response(self) -> dict: """ 重写before_response函数 例如关闭mysql/redis连接等 """ return self.make_response() """ 请不要忘记生成Flask蓝图 """ sample_interface = Blueprint("sample_interface", __name__) """ 请不要忘记指定URL路径 请不要忘记执行main_function函数 """ @sample_interface.route("/sample/index", methods=["GET"]) def main(): """ 实例化OverrideMainResponse类 并传入main_function中 您只重写core()和before_response() 即可完成一个接口 它将返回一个dict直接发送给请求端 """ override_main_response = OverriderMainResponse() return main_function(override_main_response)