多端前端PC 用户端
C 端接口与应用
这是接入 PC 用户端(以及 H5 / App)时最容易踩的坑,值得单独一页。
一句话
平台宿主不自带任何 C 端控制器。 /open/**、/portal/** 这些路径是**应用(插件)**提供的;对应应用没安装,接口就是 404。
为什么要这样设计
如果 C 端接口写在宿主里,那么每加一个 C 端业务(商城、会员、考试……)都要改宿主、重新编译、重新发版。把 C 端能力随应用走之后:
- 加一个业务 = 装一个应用;
- 应用可以独立升级,不需要重启宿主;
- 用户端只依赖「接口契约」,不依赖「平台版本」。
代价是:接口是否存在,取决于运行期装了哪些应用。 这正是排查时最容易忽略的变量。
排查顺序
接口 404
├─ ① 对应应用装了吗?启用了吗? → 我的应用 / 应用市场
├─ ② 应用版本包含这个接口吗? → 应用详情里的版本与更新日志
└─ ③ 最后才查路径拼写 / 代理配置不要一上来就查 Nginx 和前端代码。先确认应用装没装,能省掉大部分时间。
怎么快速确认
在后台「我的应用」里看应用状态;或直接请求后端 GET /app/install/mine,确认返回里包含该 appCode 且状态为启用。
常见接口前缀
| 前缀 | 典型用途 | 提供方 |
|---|---|---|
/open/** | 无需登录的开放数据(商品、内容、配置) | 对应业务应用 |
/portal/** | 登录用户的门户数据(订单、会员、消息) | 对应业务应用 |
/auth/** | 登录、验证码、刷新 token | 平台宿主 |
/system/** | 字典、地区、上传等基础能力 | 平台宿主 |
具体路径以各应用的接口清单为准,见 HTTP 接口索引 与 开放接口清单。
登录与 token
- PC 用户端使用 C 端会员登录,不复用后台管理员会话;
- token 存在前端(Pinia + 持久化),请求头格式与平台一致;
- 401 时跳登录页;403 是权限不足,不要当成未登录处理。
跨域
开发环境走 Vite 代理,不存在跨域;生产环境两种做法:
- 同域反代(推荐):
VITE_APP_BASE_API=/prod-api,Nginx 转发到后端; - 跨域直连:
VITE_APP_BASE_API=https://api.example.com/,后端必须允许对应 Origin、Credentials 与自定义头。
改了 .env.production 要重新构建,环境变量是构建期注入的。