You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
2 months ago
|
import apiService from './apiClient';
|
||
|
|
||
|
// 用户接口定义
|
||
|
export interface User {
|
||
|
id: string;
|
||
|
username: string;
|
||
|
email: string;
|
||
|
avatar?: string;
|
||
|
createdAt: string;
|
||
|
}
|
||
|
|
||
|
// 登录参数
|
||
|
export interface LoginParams {
|
||
|
email: string;
|
||
|
password: string;
|
||
|
}
|
||
|
|
||
|
// 注册参数
|
||
|
export interface RegisterParams {
|
||
|
username: string;
|
||
|
email: string;
|
||
|
password: string;
|
||
|
}
|
||
|
|
||
|
// 登录响应
|
||
|
export interface AuthResponse {
|
||
|
user: User;
|
||
|
token: string;
|
||
|
}
|
||
|
|
||
|
// 用户API服务
|
||
|
export const userApi = {
|
||
|
// 登录
|
||
|
login: (params: LoginParams) => {
|
||
|
return apiService.post<AuthResponse>('/auth/login', params);
|
||
|
},
|
||
|
|
||
|
// 注册
|
||
|
register: (params: RegisterParams) => {
|
||
|
return apiService.post<AuthResponse>('/auth/register', params);
|
||
|
},
|
||
|
|
||
|
// 获取用户信息
|
||
|
getProfile: () => {
|
||
|
return apiService.get<User>('/user/profile');
|
||
|
},
|
||
|
|
||
|
// 更新用户信息
|
||
|
updateProfile: (data: Partial<User>) => {
|
||
|
return apiService.put<User>('/user/profile', data);
|
||
|
},
|
||
|
|
||
|
// 更新用户头像
|
||
|
updateAvatar: (file: FormData) => {
|
||
|
return apiService.upload<{avatar: string}>('/user/avatar', file);
|
||
|
},
|
||
|
|
||
|
// 退出登录
|
||
|
logout: () => {
|
||
|
return apiService.post('/auth/logout');
|
||
|
},
|
||
|
|
||
|
// 检查邮箱是否可用
|
||
|
checkEmailAvailability: (email: string) => {
|
||
|
return apiService.get<{available: boolean}>('/auth/check-email', { email });
|
||
|
}
|
||
|
};
|
||
|
|
||
|
export default userApi;
|