samlax12's picture
Upload 55 files
e85fa50 verified
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;