重构用户个人中心页面,新增HTTP请求方法常量模块 - 创建constants/http.ts定义HTTP方法常量 - 在API模块中使用HTTP常量替代字符串 - 重写用户中心页面,增加编辑资料和账号安全功能 - 添加头像上传、密码修改、邮箱绑定等功能
127 lines
2.4 KiB
TypeScript
127 lines
2.4 KiB
TypeScript
import request from "@/plugins/axios";
|
|
import type { ApiResponse } from "../response";
|
|
import { HttpMethod } from "@/constants";
|
|
|
|
/**
|
|
* 认证服务 API 类型定义
|
|
*/
|
|
|
|
// 登录请求参数
|
|
export interface LoginRequest {
|
|
userAccount: string;
|
|
userPassword: string;
|
|
}
|
|
|
|
// 登录响应数据
|
|
export interface LoginResponse {
|
|
id: number;
|
|
userAccount: string;
|
|
unionId: string | null;
|
|
accessToken: string;
|
|
refreshToken: string;
|
|
accessTokenExpireTime: number | null;
|
|
refreshTokenExpireTime: number | null;
|
|
}
|
|
|
|
/**
|
|
* 注册请求参数
|
|
*/
|
|
export interface RegisterRequest {
|
|
userAccount: string;
|
|
userPassword: string;
|
|
checkPassword: string;
|
|
}
|
|
|
|
/**
|
|
* 注册响应数据
|
|
*/
|
|
export type RegisterResponse = string;
|
|
|
|
// 刷新令牌响应数据
|
|
export interface RefreshTokenResponse {
|
|
id: number | null;
|
|
userAccount: string | null;
|
|
unionId: string | null;
|
|
accessToken: string;
|
|
refreshToken: string;
|
|
accessTokenExpireTime: number | null;
|
|
refreshTokenExpireTime: number | null;
|
|
}
|
|
|
|
/**
|
|
* 认证服务 API
|
|
*/
|
|
|
|
/**
|
|
* 用户登录
|
|
* @param data 登录请求参数
|
|
* @returns 登录响应数据
|
|
*/
|
|
export const login = (
|
|
data: LoginRequest
|
|
): Promise<ApiResponse<LoginResponse>> => {
|
|
return request({
|
|
url: "/v1/auth/login",
|
|
method: HttpMethod.POST,
|
|
data,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 用户注册
|
|
* @param data 注册请求参数
|
|
* @returns 注册响应数据
|
|
*/
|
|
export const register = (
|
|
data: RegisterRequest
|
|
): Promise<ApiResponse<RegisterResponse>> => {
|
|
return request({
|
|
url: "/v1/user/register",
|
|
method: HttpMethod.POST,
|
|
data,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 令牌刷新
|
|
* @param refreshToken 刷新令牌
|
|
* @returns 新的令牌信息
|
|
*/
|
|
export const refreshToken = (
|
|
refreshToken: string
|
|
): Promise<ApiResponse<RefreshTokenResponse>> => {
|
|
return request({
|
|
url: "/v1/auth/refresh",
|
|
method: HttpMethod.POST,
|
|
params: {
|
|
refreshToken,
|
|
},
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 获取访问令牌(简化版登录)
|
|
* @param data 登录请求参数
|
|
* @returns 访问令牌字符串
|
|
*/
|
|
export const getAccessToken = (
|
|
data: LoginRequest
|
|
): Promise<ApiResponse<string>> => {
|
|
return request({
|
|
url: "/v1/auth/auth",
|
|
method: HttpMethod.POST,
|
|
data,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 令牌验证
|
|
* @returns 验证结果
|
|
*/
|
|
export const validateToken = (): Promise<ApiResponse<boolean>> => {
|
|
return request({
|
|
url: "/v1/auth/validate",
|
|
method: HttpMethod.POST,
|
|
});
|
|
};
|