BO OneAPI
BO OneAPI 是面向 BO 前端项目的接口工作台,用于扫描页面中的请求调用、匹配 Teamup 接口定义,并生成或更新标准 api.ts 与 typings.d.ts。
主要功能
- 扫描当前页面目录中的
api.ts、页面组件和 TypeScript 文件,识别 /api/ 请求。
- 手动添加扫描不到的接口,并在重新扫描时保留有效的手动接口。
- 匹配 Teamup 接口,补充请求参数、请求体和响应类型。
- 生成
export default {} 格式的 API 对象,保持现有调用方式,例如 api.info(params)。
- 更新当前目录中已经生成的 OneAPI 接口。
- 更新
src/pages/**/api.ts 下所有已经生成的 OneAPI 接口。
- 相同接口在多个页面出现时只请求一次,并同步更新所有生成位置。
- 更新前比较 method、参数类型、请求体类型、响应类型和类型字段结构。
- 只有 Teamup 明确确认接口不存在时才删除生成代码;网络异常和服务端错误会保留原代码。
- 更新和生成过程显示实时进度、成功、未变化、无法判断、删除和失败结果。
使用前准备
插件请求 Teamup 时读取本机环境变量 OFFICE_TOKEN:
export OFFICE_TOKEN="你的 Office Token"
在 macOS 图形界面启动 VS Code 时,需要确保 VS Code 进程能够读取该环境变量。配置后请重新启动 VS Code。
使用方式
在 VS Code 资源管理器中右键页面目录,选择:
OneAPI: Open Workbench:打开当前目录工作台。
OneAPI: Open Approval Workbench:打开 Approval 工作台。
在工作台中填写 Teamup 服务名和分支后,可以执行:
- 重新扫描:重新读取当前目录中的请求调用。
- 匹配 Teamup:查询并匹配扫描到的接口。
- 生成选中接口:生成选中的接口及类型文件。
- 更新当前目录接口:只更新当前目录已有
@oneapi-id 的接口。
- 更新全部页面接口:更新
src/pages/**/api.ts 中已有 @oneapi-id 的接口。
未生成的接口不会被批量更新,也不会因为“更新全部页面接口”而自动生成。
生成结果
生成的 api.ts 使用以下结构:
import request from '@library/tools/request'
export default {
// ONEAPI:BEGIN
// @oneapi-id GET:/api/demo
info: async (params: API.DemoRequest) => {
return request<API.DemoResponse>('/api/demo', {
method: 'GET',
params,
})
},
// ONEAPI:END
}
@oneapi-id 用于后续识别、更新和删除已经生成的接口。OneAPI 区域外的手写业务代码会被保留。
更新规则
以下变化会被标记为“已更新”:
- method 或请求路径变化。
- 参数、请求体或响应类型引用变化。
- 类型字段新增、删除、重命名、类型变化或可选性变化。
- 嵌套对象、数组元素或枚举结构变化。
any 变成具体类型。
函数名、接口描述、格式和字段顺序变化不会触发更新。如果历史类型无法可靠解析,插件会显示“无法判断”并保留原代码。
注意事项
- 批量更新按接口串行请求,每条接口请求间隔 400 毫秒。
OFFICE_TOKEN 只从本机环境变量读取,不会写入生成文件。
- Marketplace 发布使用的 Personal Access Token 只用于发布插件,与
OFFICE_TOKEN 无关。
- 建议在发布前确认
package.json 中的 publisher 与 Marketplace Publisher ID 完全一致,包括大小写。