File size: 1,893 Bytes
0f7bf78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 系统模式

## 系统架构
本项目采用客户端-代理服务器-目标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,并处理响应。