Files
photography/frontend/lib/api.ts
xujiang af222afc33 feat: 完成前后端API联调测试并修复配置问题
- 启动后端go-zero API服务 (端口8080)
- 修复前端API配置中的端口号 (8888→8080)
- 完善前端API状态监控组件
- 创建categoryService服务层
- 更新前端数据查询和转换逻辑
- 完成完整API集成测试,验证所有接口正常工作
- 验证用户认证、分类管理、照片管理等核心功能
- 创建API集成测试脚本
- 更新任务进度文档

测试结果:
 后端健康检查正常
 用户认证功能正常 (admin/admin123)
 分类API正常 (5个分类)
 照片API正常 (0张照片,数据库为空)
 前后端API连接完全正常

下一步: 实现照片展示页面和搜索过滤功能
2025-07-11 11:42:14 +08:00

53 lines
1.3 KiB
TypeScript

import axios from 'axios'
// 创建axios实例
const api = axios.create({
baseURL: process.env.NEXT_PUBLIC_USE_REAL_API === 'true'
? (process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8080/api/v1')
: (process.env.NEXT_PUBLIC_MOCK_API_URL || 'http://localhost:3001/api'),
timeout: 10000,
headers: {
'Content-Type': 'application/json',
},
})
// 请求拦截器
api.interceptors.request.use(
(config) => {
// 可以在这里添加token等认证信息
const token = localStorage.getItem('token')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
},
(error) => {
return Promise.reject(error)
}
)
// 响应拦截器
api.interceptors.response.use(
(response) => {
// 处理后端API的响应格式: { code: number, message: string, data: any }
if (process.env.NEXT_PUBLIC_USE_REAL_API === 'true') {
const { code, message, data } = response.data
if (code !== 200) {
return Promise.reject(new Error(message || '请求失败'))
}
return data // 返回data部分
}
// Mock API直接返回数据
return response.data
},
(error) => {
if (error.response?.status === 401) {
// 处理未授权
localStorage.removeItem('token')
window.location.href = '/login'
}
return Promise.reject(error)
}
)
export default api