duoqi-admin/src/lib/api-client.ts
Wang Zhuoxuan ccc32538a1 初始化项目骨架(Phase 1a)
- Vite + React + TypeScript 项目初始化
- Tailwind CSS v4 + shadcn/ui 配置(button, card, input, label)
- React Router v7 路由:登录页、数据看板、题库/分类/用户/设置占位页
- AdminLayout 布局:侧边栏导航 + 顶栏
- ky v2 HTTP 客户端,自动附加 Bearer token
- Zustand auth store + localStorage 持久化
- 认证保护:未登录自动重定向到 /login
- 数据看板骨架(4 统计卡片 + 图表占位)
- 类型定义:question, user, category, api
2026-04-07 10:51:22 +08:00

27 lines
606 B
TypeScript

import ky from "ky"
import { API_BASE_URL } from "./constants"
import { getStoredToken, removeStoredToken } from "./auth"
export const apiClient = ky.create({
baseUrl: API_BASE_URL,
prefix: "/admin",
hooks: {
beforeRequest: [
({ request }) => {
const token = getStoredToken()
if (token) {
request.headers.set("Authorization", `Bearer ${token}`)
}
},
],
afterResponse: [
({ response }) => {
if (response.status === 401) {
removeStoredToken()
window.location.href = "/login"
}
},
],
},
})