Spaces:
Sleeping
Sleeping
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; |