Skip to content

@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 包零改动

onErroronUnauthorizedtokenStore
webfxMsg.errorrouter.push('/login')secure-ls 加密
Ant Design Vuemessage.errorvue-routerlocalStorage
uni-appuni.showToastuni.reLaunchuni.storage