Skip to content

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)。

建议阅读顺序 ​

  1. 先看开放接口清单的「通用约定」与平台那一节 —— 站点配置与公开公告是两个 所有应用都会用到、且不需要应用自己写代码的端点;
  2. 再按你正在做的事挑:写插件后端看平台 SDK 契约, 宿主侧要调插件服务看定位器,写插件前端看前端运行时 API;
  3. 想知道这些能力在运行期怎么装配起来,回到插件运行时。

相关阅读 ​

我们坚信,即使再复杂的技术,也可以用清晰、干练、易懂的文字描述清楚。如果你在阅读时有难以理解的章节,那一定是我们还没有优化好它 —— 欢迎反馈。