litefs.middleware.base 源代码

#!/usr/bin/env python
# coding: utf-8

from typing import Any, Callable, Optional


[文档] class Middleware: """ 中间件基类 所有中间件都应该继承此类并实现 process_request 和/或 process_response 方法 """ def __init__(self, app): """ 初始化中间件 Args: app: Litefs 应用实例 """ self.app = app
[文档] def process_request(self, request_handler): """ 处理请求,在请求到达业务逻辑之前执行 Args: request_handler: 请求处理器实例 Returns: None: 继续处理请求 其他值: 直接返回该值作为响应,中断后续处理 """ pass
[文档] def process_response(self, request_handler, response): """ 处理响应,在响应返回给客户端之前执行 Args: request_handler: 请求处理器实例 response: 响应数据 Returns: 修改后的响应数据 """ return response
[文档] def process_exception(self, request_handler, exception): """ 处理异常 Args: request_handler: 请求处理器实例 exception: 异常对象 Returns: None: 继续抛出异常 其他值: 返回该值作为响应,不抛出异常 """ return None
[文档] class MiddlewareManager: """ 中间件管理器 负责管理所有中间件的注册、加载和执行 """ def __init__(self): self._middlewares = []
[文档] def add(self, middleware_class, **kwargs): """ 添加中间件 Args: middleware_class: 中间件类 **kwargs: 传递给中间件构造函数的参数 Returns: self: 支持链式调用 """ self._middlewares.append((middleware_class, kwargs)) return self
[文档] def remove(self, middleware_class): """ 移除中间件 Args: middleware_class: 中间件类 """ self._middlewares = [ (cls, kwargs) for cls, kwargs in self._middlewares if cls != middleware_class ]
[文档] def clear(self): """ 清空所有中间件 """ self._middlewares.clear()
[文档] def get_middleware_instances(self, app): """ 获取所有中间件实例 Args: app: Litefs 应用实例 Returns: 中间件实例列表 """ instances = [] for middleware_class, kwargs in self._middlewares: instances.append(middleware_class(app, **kwargs)) return instances
[文档] def process_request(self, request_handler): """ 按顺序执行所有中间件的 process_request 方法 Args: request_handler: 请求处理器实例 Returns: None: 继续处理请求 其他值: 直接返回该值作为响应 """ for middleware in request_handler._middlewares: result = middleware.process_request(request_handler) if result is not None: return result return None
[文档] def process_response(self, request_handler, response): """ 按逆序执行所有中间件的 process_response 方法 Args: request_handler: 请求处理器实例 response: 响应数据 Returns: 处理后的响应数据 """ for middleware in reversed(request_handler._middlewares): response = middleware.process_response(request_handler, response) return response
[文档] def process_exception(self, request_handler, exception): """ 按顺序执行所有中间件的 process_exception 方法 Args: request_handler: 请求处理器实例 exception: 异常对象 Returns: None: 继续抛出异常 其他值: 返回该值作为响应 """ for middleware in request_handler._middlewares: result = middleware.process_exception(request_handler, exception) if result is not None: return result return None