fastapi-proxy / memory-bank /systemPatterns.md
airsltd's picture
update
0f7bf78

系统模式

系统架构

本项目采用客户端-代理服务器-目标API的架构模式。

  • 客户端:发起HTTP请求到代理服务器。
  • 代理服务器:基于FastAPI构建,接收客户端请求,解析URL,重构目标URL,并将请求转发到实际的外部API。
  • 目标API:外部的HTTPS API服务。
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,并处理响应。