File size: 2,747 Bytes
6a5b28d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
32
33
34
35
36
37
# 系统模式 (systemPatterns.md)

## 系统架构
本项目采用简单的客户端-代理-目标 API 的三层架构。

```mermaid
graph LR
    Client[客户端 (e.g., Postman, curl)] --> Proxy[FastAPI 代理 (SuperProxy)]
    Proxy --> TargetAPI[目标 API (e.g., Google Gemini API)]
```

## 关键技术决策
*   **FastAPI**:选择 FastAPI 作为 Web 框架,因为它提供了高性能、易于使用的异步 API 开发能力,非常适合构建轻量级代理服务。
*   **httpx**:选择 `httpx` 作为 HTTP 客户端库,因为它支持异步请求,与 FastAPI 的异步特性完美结合,避免了阻塞。
*   **环境变量配置**:使用 `python-dotenv` 管理敏感信息(如 API 密钥)和可配置参数(如目标 API 基 URL),增强了安全性和灵活性。
*   **通用路由**:采用 `/{path:path}` 通用路由来捕获所有传入请求,实现灵活的转发,无需为每个目标 API 端点单独定义路由。

## 设计模式
*   **代理模式 (Proxy Pattern)**:本项目是代理模式的经典应用,FastAPI 应用程序充当客户端和目标 API 之间的代理,控制对目标 API 的访问并进行请求/响应转换。
*   **配置即代码 (Configuration as Code)**:通过 `.env` 文件管理配置,使得部署和环境切换更加便捷和可控。

## 组件关系
*   **FastAPI 应用 (`app.py`)**:核心组件,负责路由、请求解析、请求转发和响应处理。
*   **httpx 客户端**:在 FastAPI 应用内部使用,负责向目标 API 发送实际的 HTTP 请求。
*   **python-dotenv**:在应用启动时加载 `.env` 文件中的环境变量,供 FastAPI 应用使用。
*   **客户端**:可以是任何 HTTP 客户端(浏览器、Postman、`curl`、自定义应用),向 FastAPI 代理发送请求。
*   **目标 API**:本项目中特指 Google Gemini API(OpenAI 兼容接口),是代理请求的最终目的地。

## 关键实现路径
1.  **请求接收**:FastAPI 的 `@app.api_route("/{path:path}")` 装饰器捕获所有传入请求。
2.  **请求解析**`Request` 对象用于获取请求方法、头部、查询参数和请求体。
3.  **头部处理**:移除 `Host` 头,添加 `Authorization: Bearer` 头,并强制设置 `User-Agent`4.  **URL 构建**:根据 `GEMINI_BASE_URL` 和传入的 `path` 构建目标 API 的完整 URL。
5.  **请求转发**:使用 `httpx.AsyncClient().request()` 异步发送请求到目标 API。
6.  **响应处理**:将目标 API 的 `content``status_code``headers` 封装成 `FastAPI.Response` 返回给客户端。
7.  **错误处理**:捕获 `httpx.RequestError``httpx.HTTPStatusError`,并转换为 `HTTPException` 返回给客户端。