🌐 Admin 请求与模块
Admin 请求封装位于:
text
frontend/admin/src/utils/request/index.ts📑 请求默认配置
| 配置 | 说明 |
|---|---|
baseURL | VITE_APP_BASE_URL 处理后的域名 |
urlPrefix | adminapi |
timeout | 10 秒 |
Content-Type | application/json |
version | frontend/admin/src/config/index.ts 中的版本 |
withToken | 默认 true |
isParamsToData | POST 默认把 params 转为 data |
isOpenRetry | 默认开启请求重试 |
📁 API 文件放置
System 模块 API 位于:
text
frontend/admin/src/views/System/api该目录按业务继续细分:
text
api/
├─ article/
├─ integration/
├─ language/
├─ org/
├─ perms/
├─ setting/
├─ app.ts
├─ decoration.ts
├─ file.ts
├─ login.ts
├─ message.ts
├─ search.ts
└─ user.ts新增模块建议遵循同样模式:
text
src/views/{Module}/api
src/views/{Module}/{feature}/index.vue
src/views/{Module}/{feature}/edit.vue可选业务模块如果需要支持安装、卸载,不应把页面长期直接放在主工程。推荐先放入模块资源包:
text
modules/{Module}/Resources/admin/src/views/{Module}再通过 modules/{Module}/Resources/publish-manifest.json 发布到:
text
frontend/admin/src/views/{Module}模块卸载时,安装器会删除发布过的页面资源。后台菜单中的 component 仍然以 src/views 为根,例如 {Module}/{feature}/index。
可选能力模块的 API 封装放在自己的模块页面目录中,例如:
text
frontend/admin/src/views/{Module}/api跨模块共用的轻量注册表或适配器可以放到 frontend/admin/src/components,具体业务页面仍由模块资源包发布。
🧑💻 API 写法示例
ts
import request from '@/utils/request'
export function articleList(params?: Record<string, any>) {
return request.get({ url: '/system/article/list/index', params })
}注意:不需要在业务 API 文件里重复写 adminapi,请求封装会自动拼接前缀。
📡 响应处理
统一响应处理规则:
- 成功:
code=200,返回data。 - 成功提示:后端返回
message时自动成功提示。 - 业务错误:展示
message并Promise.reject(response.data)。 - 登录失效:清理 token 并跳转登录页。
- 打开外部页:
code=2,跳转data.url。
⬆️ 上传
后台上传接口:
text
POST /adminapi/system/upload/file后端有 admin-upload 限流。文件类型、大小规则由 config/sunadmin.php 的 upload 配置控制。
🪛 页面开发建议
- 列表页优先复用
components/admin/list-shell.vue、surface-card.vue等后台壳组件。 - 表单弹窗或编辑页要和接口保存字段保持一一对应,不做无意义兼容字段。
- 菜单页面组件路径以
src/views为根,例如System/user/index。 - 可安装模块的装修链接入口写入
admin.app_links,由安装器生成src/modules/app-links.ts。 - 需要刷新菜单权限时调用用户 store 的
refreshUserAccess()。 - 请求错误由拦截器统一提示,页面只处理业务上的恢复动作。
