fastapi-proxy / memory-bank /systemPatterns.md
airsltd's picture
update
0f7bf78
# 系统模式
## 系统架构
本项目采用客户端-代理服务器-目标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,并处理响应。