# 系统模式 ## 系统架构 本项目采用客户端-代理服务器-目标API的架构模式。 - **客户端**:发起HTTP请求到代理服务器。 - **代理服务器**:基于FastAPI构建,接收客户端请求,解析URL,重构目标URL,并将请求转发到实际的外部API。 - **目标API**:外部的HTTPS API服务。 ```mermaid graph LR Client -- HTTP Request --> ProxyServer ProxyServer -- HTTPS Request --> TargetAPI TargetAPI -- Response --> ProxyServer ProxyServer -- Response --> Client ``` ## 关键技术决策 - **Web框架**:选择FastAPI,因为它支持异步操作,性能高,并且易于构建API。 - **HTTP客户端**:使用`httpx`库进行HTTP请求转发。`httpx`支持异步请求,与FastAPI的异步特性兼容良好。 - **并发模型**:利用FastAPI的异步特性和Python的`asyncio`实现多线程(或更准确地说是协程)并发处理,以提高代理服务的吞吐量。 - **URL解析与重构**:代理服务器的核心逻辑在于解析传入的URL,提取出协议、域名和路径,然后重新构造目标API的URL。例如,将`/v1/https/open.bigmodel.cn/api/paas/v4/chat/completions`解析为`https://open.bigmodel.cn/api/paas/v4/chat/completions`。 ## 设计模式 - **代理模式 (Proxy Pattern)**:本项目是代理模式的典型应用,代理服务器作为客户端和目标API之间的中介。 - **URL路由 (URL Routing)**:FastAPI的路由机制用于匹配传入的URL路径,并将其分派到相应的处理函数。 ## 组件关系 - **FastAPI应用**:作为整个代理服务的入口点。 - **路由处理器**:定义了处理不同URL模式的函数,例如处理`/v1/{protocol}/{domain}/{path:path}`的通用代理路由。 - **HTTP转发逻辑**:在路由处理器内部,负责使用`httpx`构建并发送请求到目标API,并处理响应。