import axios from 'axios'; // 创建 axios 实例 const api = axios.create({ baseURL: 'https://samlax12-promptbackend.hf.space/api', // 使用实际后端地址 headers: { 'Content-Type': 'application/json' } }); // 请求拦截器,添加认证信息 api.interceptors.request.use(config => { const token = localStorage.getItem('authToken'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, error => { return Promise.reject(error); }); // 响应拦截器,处理错误 api.interceptors.response.use(response => { return response; }, error => { if (error.response && error.response.status === 401) { // 认证失败,清除登录信息并重定向到登录页 localStorage.removeItem('authToken'); localStorage.removeItem('user'); window.location.href = '/login'; } return Promise.reject(error); }); // 用户认证相关 API export const authAPI = { login: async (username: string, password: string) => { const response = await api.post('/auth/login', { username, password }); // eslint-disable-next-line const { token, _id, username: user } = response.data; localStorage.setItem('authToken', token); localStorage.setItem('user', user); return response.data; }, getProfile: async () => { return api.get('/auth/profile'); }, logout: () => { localStorage.removeItem('authToken'); localStorage.removeItem('user'); } }; // 分类相关 API export const categoryAPI = { getAll: async () => { const response = await api.get('/categories'); return response.data; }, create: async (data: { name: string; color: string }) => { const response = await api.post('/categories', data); return response.data; }, update: async (id: string, data: { name: string; color: string }) => { const response = await api.put(`/categories/${id}`, data); return response.data; }, delete: async (id: string) => { const response = await api.delete(`/categories/${id}`); return response.data; } }; // 提示词组相关 API export const promptGroupAPI = { getAll: async () => { const response = await api.get('/prompt-groups'); return response.data; }, getById: async (id: string) => { const response = await api.get(`/prompt-groups/${id}`); return response.data; }, create: async (data: { name: string; description: string; category: string }) => { const response = await api.post('/prompt-groups', data); return response.data; }, update: async (id: string, data: { name: string; description: string; category: string }) => { const response = await api.put(`/prompt-groups/${id}`, data); return response.data; }, delete: async (id: string) => { const response = await api.delete(`/prompt-groups/${id}`); return response.data; }, // 提示词相关操作 addPrompt: async (groupId: string, data: { title: string; content: string; tags: string[] }) => { const response = await api.post(`/prompt-groups/${groupId}/prompts`, data); return response.data; }, updatePrompt: async (groupId: string, promptId: string, data: { title: string; content: string; tags: string[] }) => { const response = await api.put(`/prompt-groups/${groupId}/prompts/${promptId}`, data); return response.data; }, deletePrompt: async (groupId: string, promptId: string) => { const response = await api.delete(`/prompt-groups/${groupId}/prompts/${promptId}`); return response.data; }, // DSL 文件相关操作 - 更新为支持内容上传 addDslFile: async (groupId: string, data: { name: string; content?: string; fileData?: string; mimeType?: string }) => { const response = await api.post(`/prompt-groups/${groupId}/dsl-files`, data); return response.data; }, updateDslFile: async (groupId: string, fileId: string, data: { name?: string; content?: string }) => { const response = await api.put(`/prompt-groups/${groupId}/dsl-files/${fileId}`, data); return response.data; }, deleteDslFile: async (groupId: string, fileId: string) => { const response = await api.delete(`/prompt-groups/${groupId}/dsl-files/${fileId}`); return response.data; } }; export default api;