@fx/api-admin
后台管理业务接口集合。基于 @fx/api-core 的 http 实例,通过 createAdminApi(http) 工厂聚合 auth / users / roles 等 10 个业务域。无全局单例、无注入时机问题、完全懒加载。
createAdminApi
ts
import { createAdminApi } from "@fx/api-admin"
const adminApi = createAdminApi(http)业务域
ts
adminApi.auth.login(username, password)
adminApi.users.getUsers({ page: 1 })
adminApi.roles.getRoles()
adminApi.depts.getDeptTree()
adminApi.menus.getMenuTree()
adminApi.files.getFiles({ page: 1 })
adminApi.storage.getStorageConfigs()
adminApi.logs.getOperationLogs()
adminApi.dashboard.getDashboardStats()
adminApi.runtimeLogs.getRuntimeLogs()完整接入示例(web)
1. request 薄壳 —— 创建实例 + 注入 web 行为
ts
import { createHttp, createRawClient, type TokenStore } from "@fx/api-admin"
import { getStorage, setStorage, removeStorage } from "@/utils"
import { fxMsg } from "@fx/components"
import router from "@/router"
const tokenStore: TokenStore = {
getAccessToken: () => getStorage("token", true)?.access_token ?? null,
getRefreshToken: () => getStorage("token", true)?.refresh_token ?? null,
setTokens: (a, r) => setStorage("token", { access_token: a, refresh_token: r }, true),
clearTokens: () => removeStorage("token", true),
}
const raw = createRawClient(BASE_URL, 5000)
export const request = createHttp({
baseURL: BASE_URL,
tokenStore,
onError: (msg) => fxMsg.error(msg),
onUnauthorized: () => router.push("/login"),
refresh: async (rt) => {
const { data } = await raw.post("/api/v1/sys/auth/refresh", { refresh_token: rt })
return data.data
},
})2. admin-instance —— 懒加载工厂
ts
import { createAdminApi } from "@fx/api-admin"
import { request } from "./request"
export const adminApi = createAdminApi(request)3. 页面直接用 adminApi
ts
import { adminApi } from "@/api/admin-instance"
const { data } = await adminApi.users.getUsers({ page: 1 })多端复用(UI 无关)
换 UI 框架只改 request 薄壳的注入项,api 包零改动:
| 端 | onError | onUnauthorized | tokenStore |
|---|---|---|---|
| web | fxMsg.error | router.push('/login') | secure-ls 加密 |
| Ant Design Vue | message.error | vue-router | localStorage |
| uni-app | uni.showToast | uni.reLaunch | uni.storage |
