主题
API 手册
这一册收的是跨边界的稳定面:平台对外、平台与插件、宿主与远程应用之间, "约定好了就不该随便改"的那些接口。全部对着源码写,不转述二手结论。
这一册包含什么
| 分册 | 内容 | 谁要看 |
|---|---|---|
| 开放接口清单 | 全部 /open/** 端点共 50 个(宿主 4 + 各应用 46):路径 / 方法 / 说明 / 是否匿名 | C 端与第三方调用方;要开放自己接口的插件作者 |
| 平台 SDK 契约 | wujies-common-plugin-sdk 的 18 个类:6 个能力接口、9 个值对象、3 个定位器 | 用平台能力的插件作者;提供实现的平台侧 |
| 定位器 | 宿主反过来调插件服务的两条路,PluginServiceProvider / PluginServiceLocator 与会员 / 支付 / IM 三个薄包装 | 宿主侧要调插件服务的人;做跨插件调用的插件作者 |
| 前端运行时 API | 远程应用通过 install(runtime) 拿到的 11 个字段,以及 manifest / views 的返回约定 | 写远程应用前端的人 |
与「HTTP 接口索引」的分工
两页都会出现 HTTP 端点,但收的不是同一批:
| API 手册(本册) | HTTP 接口索引 | |
|---|---|---|
| 范围 | 跨边界稳定面:/open/**、SDK 类、定位器、前端运行时 | 宿主管理端全量端点(/app/**,48 个) |
| 视角 | 别人要依赖什么 | 平台自己提供什么 |
| 改动代价 | 改了就会破坏已发布的插件或已在跑的 C 端 | 改了只影响本平台的前端 |
三条使用前提
1. /open/** 是匿名面,其余一律要登录态
整段 /open/** 都免登录(控制器类上 @SaIgnore + 宿主 security.excludes 双保险), 而插件自己的管理端接口同样过鉴权(插件路由挂了宿主的拦截器链,见 插件运行时)—— 插件接口不会"裸奔"。
2. 能力接口都要能降级,别强注入
插件用 ObjectProvider.getIfAvailable() 取 SDK 里的能力接口,取不到就降级。 强注入会把"宿主缺少该能力(例如平台裁剪版)"变成启动失败, 而插件能降级运行才是这套契约存在的意义。
3. 契约一旦发出去就冻结
components 组件的 props、request 的调用形态、SDK 接口的方法签名,改了就会破坏已发布的包。 要加就新增,不要改既有签名;SDK 里加字段前还要确认调用方真的在用 (MemberProfileView 的类注释专门写了这一条:加了没人用,就是无声的 undefined)。
建议阅读顺序
- 先看开放接口清单的「通用约定」与平台那一节 —— 站点配置与公开公告是两个 所有应用都会用到、且不需要应用自己写代码的端点;
- 再按你正在做的事挑:写插件后端看平台 SDK 契约, 宿主侧要调插件服务看定位器,写插件前端看前端运行时 API;
- 想知道这些能力在运行期怎么装配起来,回到插件运行时。