docs: remove deprecated UAPI class from documentation

This commit is contained in:
yumoqing 2026-05-11 18:22:16 +08:00
parent 5189abf931
commit 619399d250

View File

@ -24,8 +24,8 @@ uapi/
├── uapi/ # Python 源码包
│ ├── __init__.py # 空
│ ├── init.py # 模块初始化,注册函数到 ServerEnv
│ ├── appapi.py # UAPI 核心类 + deerer/bearer 认证
│ ├── uapi.py # UpAppApi 类(基于 UAPIData 缓存的版本
│ ├── appapi.py # deerer/bearer 认证 + 辅助查询函数
│ ├── uapi.py # UpAppApi 类(API 调用核心类
│ ├── apidata.py # UAPIData 单例缓存
│ └── uptask.py # 异步长任务管理
├── json/ # CRUD 定义bricks-framework
@ -88,7 +88,6 @@ upapp (上位系统) ──1:N──> upappkey (API密钥)
```python
def load_uapi():
g = ServerEnv()
g.UAPI = UAPI
g.UpAppApi = UpAppApi
g.uapi_data = UAPIData()
g.get_deerer = get_deerer
@ -105,50 +104,37 @@ def load_uapi():
其他模块的 `.dspy` 文件可通过 `globals()` 直接使用这些函数。
### UAPI 类appapi.py
### UpAppApi 类uapi.py
**直接查数据库调用外部 API 的核心类。**
**基于 UAPIData 缓存的 API 调用类。**
```python
# 在 .dspy 中使用
uapi = UAPI(request, DictObject(**globals()))
api = UpAppApi(request)
# 调用方式 1流式调用返回生成器
async for chunk in uapi(upappid, apiname, callerid, params={}):
async for chunk in api(upappid, apiname, callerid, params={}):
# chunk 是 bytes
# 调用方式 2一次性获取全部响应
result = await uapi.call(upappid, apiname, callerid, params={})
result = await api.call(upappid, apiname, callerid, params={})
# result 是 bytes
# 调用方式 3逐行流式处理自动过滤 chunk_match 前缀)
async for line in uapi.stream_linify(upappid, apiname, callerid, params={}):
async for line in api.stream_linify(upappid, apiname, callerid, params={}):
# line 是 str已去除 chunk_match 前缀,经 response 模板渲染
```
**构造参数:**
- `request`: HTTP 请求对象(可选,用于获取运行时命名空间)
- `env`: DictObject 环境变量(可选,默认从 ServerEnv 获取)
- `sor`: sqlor 游标(可选,传入后不再自行创建数据库连接)
**工作流程:**
1. 通过 `sor_get_uapi()` 查询 uapi/upapp/uapiset 三表获取 API 配置
1. 通过 `UAPIData` 获取 API 定义(内存缓存,不直接查库)
2. 如果 API 定义了 `auth_apiname`,先执行认证 API`do_auth`),将结果注入 `self.env`
3. 通过 `get_userapikey()` 获取调用者的 API 密钥信息
4. 渲染 path/headers/data/params 模板,组装 HTTP 请求
5. 如果配置了 `dynamic_func_name`,执行动态函数
6. 通过 `StreamHttpClient` 发起 HTTP 请求并流式返回
### UpAppApi 类uapi.py
**基于 UAPIData 缓存的 API 调用类,接口与 UAPI 完全一致。**
区别在于UAPI 每次都查数据库UpAppApi 通过 UAPIData 单例缓存 API 定义和密钥信息,适合高频调用场景。
```python
# 在 .dspy 中使用
api = UpAppApi(request)
result = await api.call(upappid, apiname, callerid, params={})
```
### UAPIData 类apidata.py
@ -277,7 +263,7 @@ import asyncio
from appPublic.jsonConfig import getConfig
from sqlor.dbpools import DBPools
from ahserver.serverenv import ServerEnv
from uapi.appapi import UAPI
from uapi.uapi import UpAppApi
def get_module_dbname(mn):
return 'sage'
@ -289,7 +275,7 @@ async def main():
env = ServerEnv()
env.get_module_dbname = get_module_dbname
uapi = UAPI()
api = UpAppApi()
params = {
'baseurl': 'https://qianfan.baidubce.com',
'model': 'deepseek-v3',
@ -297,7 +283,7 @@ async def main():
}
upapiid = 'R47xUJay76dCCt1sLmWvE'
async for line in uapi.stream_linify(upapiid, '0', callerid, params=params):
async for line in api.stream_linify(upapiid, '0', callerid, params=params):
print(line)
if __name__ == '__main__':
@ -389,14 +375,13 @@ xls2ui -m ../models -o ../wwwroot uapi *.json
## 关键设计要点
1. **双调用路径**UAPI直接查库和 UpAppApi缓存版提供相同接口按需选择
2. **模板引擎渲染**path/headers/data/params/response 全部支持模板语法,可在配置中动态组装
3. **流式响应支持**:通过 `StreamHttpClient``stream_linify` 支持 SSE 场景(如 LLM API
4. **chunk_match 过滤**:自动去除流式响应中的前缀行(如 `data:`),只提取有效数据
5. **response 模板**:可定义响应数据转换模板,将上游 JSON 映射为前端需要的格式
6. **AES 加密密钥**`secretkey` 在数据库中 AES 加密存储,运行时通过 `password_decode()` 解密
7. **Deerer 认证**:自定义认证头,时间戳 + apikey AES 加密,防重放攻击
8. **动态函数扩展**`dynamic_func` 允许在 HTTP 请求前执行自定义逻辑(通过 RegisterFunction
1. **模板引擎渲染**path/headers/data/params/response 全部支持模板语法,可在配置中动态组装
2. **流式响应支持**:通过 `StreamHttpClient``stream_linify` 支持 SSE 场景(如 LLM API
3. **chunk_match 过滤**:自动去除流式响应中的前缀行(如 `data:`),只提取有效数据
4. **response 模板**:可定义响应数据转换模板,将上游 JSON 映射为前端需要的格式
5. **AES 加密密钥**`secretkey` 在数据库中 AES 加密存储,运行时通过 `password_decode()` 解密
6. **Deerer 认证**:自定义认证头,时间戳 + apikey AES 加密,防重放攻击
7. **动态函数扩展**`dynamic_func` 允许在 HTTP 请求前执行自定义逻辑(通过 RegisterFunction
---
@ -419,4 +404,3 @@ uapi
3. **密钥解密**:从数据库读取的 apikey/secretkey 必须通过 `password_decode()` 解密
4. **模板渲染异常**headers/body 模板渲染后需 json.loads 验证,渲染失败会抛出异常
5. **uptask 回调**convert_func 返回 None 时会抛异常,必须返回包含 status 字段的字典
6. **UAPI 与 UpAppApi 选择**:低频调用用 UAPI每次查库确保最新高频调用用 UpAppApi缓存