feat(frontend): Day 6 - frontend basic architecture completed

This commit is contained in:
AI Clinical Dev Team
2025-10-10 17:22:37 +08:00
parent 0db54b2d31
commit f7a500bc79
20 changed files with 6718 additions and 0 deletions

23
frontend/src/api/index.ts Normal file
View File

@@ -0,0 +1,23 @@
import request from './request'
// 健康检查
export const healthCheck = () => {
return request.get('/health')
}
// API信息
export const getApiInfo = () => {
return request.get('/')
}
// TODO: Day 9+ 添加更多API
// - 项目管理API
// - 对话API
// - 知识库API
// - 用户API
export default {
healthCheck,
getApiInfo,
}

View File

@@ -0,0 +1,59 @@
import axios, { AxiosInstance, AxiosResponse } from 'axios'
// 创建axios实例
const request: AxiosInstance = axios.create({
baseURL: '/api/v1',
timeout: 30000,
headers: {
'Content-Type': 'application/json',
},
})
// 请求拦截器
request.interceptors.request.use(
(config) => {
// 添加token
const token = localStorage.getItem('token')
if (token && config.headers) {
config.headers.Authorization = `Bearer ${token}`
}
return config
},
(error) => {
return Promise.reject(error)
}
)
// 响应拦截器
request.interceptors.response.use(
(response: AxiosResponse) => {
return response.data
},
(error) => {
if (error.response) {
const { status } = error.response
switch (status) {
case 401:
// 未授权清除token并跳转登录
localStorage.removeItem('token')
window.location.href = '/login'
break
case 403:
console.error('没有权限访问该资源')
break
case 404:
console.error('请求的资源不存在')
break
case 500:
console.error('服务器错误')
break
default:
console.error(`请求错误: ${status}`)
}
}
return Promise.reject(error)
}
)
export default request