请求、国际化与主题集成
请求、国际化与主题集成
AI 业务复用平台的请求实例、公共语言和主题。普通接口与流式请求分别走对应通道。
普通请求
接口文件放在 src/api/{模块}/,通过 @saber/micro/http 委托到平台请求链。
import request from '@saber/micro/http';
export const getDetail = (id: string) =>
request({
url: '/blade-ai/app/detail',
method: 'get',
params: { id },
});请求链负责平台认证、业务错误、会话续期和报文加密。后端标注 @ApiCrypto 的凭证接口配置 cryptoData: true。列表等普通查询按接口定义发起。
文件通过平台请求实例提交 FormData;业务代码不另建 axios 实例。
流式请求
对话、工作流调试和问数等流式通道需要直接读取响应流,使用 fetch 与 engine/stream。接口地址包含代理前缀,例如 /api/blade-ai/**。
管理端请求头由 useAdminHeaders() 在发起时读取,包含 Blade-Auth 与 Blade-Requested-With;分享页面使用 useShareHeaders()。开放 API 调试器使用资源密钥。
连接通过 AbortController 中止。页面离开、重新发起或用户停止时释放连接;流式请求不经过普通接口的自动续期重放。
国际化
AI 自有文案在 src/lang/zh.ts 定义,en.ts 保持同形,页面通过 import { t } from '@/lang' 使用。路由标题进入 route 段,其他文案位于 ai.* 命名空间。
宿主公共按钮与反馈文案使用契约承诺的公共键。提示词、模板等需要保留花括号的业务内容直接作为文本处理。
主题与资源
组件通过 var(--blade-*) 消费颜色、字体、边框、间距和圆角。画布或图表订阅 theme:changed 后重绘;卸载时取消事件订阅。
运行期静态资源统一通过 platform.assets.resolve('ai', path) 获取,按当前远端注册位置解析。随代码导入的文件使用构建工具的资源导入方式。
源码定位:Saber-AI src/api/、src/engine/stream/、src/lang/;Saber src/axios.ts;Saber-Kit HTTP、主题与资源契约。
