feat: 提示词
This commit is contained in:
@@ -5,3 +5,4 @@ docs/openapi.json文件是后端提供的标准OpenAPI接口文档,你需要
|
|||||||
3. 按模块拆分接口请求函数;
|
3. 按模块拆分接口请求函数;
|
||||||
4. 严格遵循文档字段,不新增、不删减参数,区分必填/可选;
|
4. 严格遵循文档字段,不新增、不删减参数,区分必填/可选;
|
||||||
5. 按现有src/api/modules中的格式书写
|
5. 按现有src/api/modules中的格式书写
|
||||||
|
6. 定义的TS类型名称,interface以I开头命名,type以T开头命名
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
export * from './login.ts'
|
export * from './login.ts'
|
||||||
export * from './user.ts'
|
|
||||||
|
|||||||
@@ -1,17 +1,62 @@
|
|||||||
import { requestClient } from '@/api/request'
|
import { requestClient } from '@/api/request'
|
||||||
|
|
||||||
/** 登录响应数据类型 */
|
/**
|
||||||
export interface ILoginResponse {
|
* 登录请求参数
|
||||||
token: string
|
*
|
||||||
}
|
* 对应 OpenAPI: LoginRequest
|
||||||
|
*/
|
||||||
/** 登录请求数据类型 */
|
export interface LoginRequest {
|
||||||
export interface ILoginRequest {
|
/** 用户名,不能为空 */
|
||||||
username: string
|
username: string
|
||||||
|
/** 密码,不能为空 */
|
||||||
password: string
|
password: string
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 登录 */
|
/**
|
||||||
function login(req: ILoginRequest) {
|
* 注册请求参数
|
||||||
return requestClient.post<ILoginResponse>('/account', req)
|
*
|
||||||
|
* 对应 OpenAPI: RegisterRequest
|
||||||
|
*/
|
||||||
|
export interface RegisterRequest {
|
||||||
|
/** 用户名,长度限制 3-32 位 */
|
||||||
|
username: string
|
||||||
|
/** 密码,长度限制 6-64 位 */
|
||||||
|
password: string
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登录/注册响应
|
||||||
|
*
|
||||||
|
* 对应 OpenAPI: LoginResponse
|
||||||
|
*/
|
||||||
|
export interface LoginResponse {
|
||||||
|
/** Sa-Token 认证令牌(UUID 格式) */
|
||||||
|
token: string
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户登录
|
||||||
|
*
|
||||||
|
* 使用用户名和密码进行登录认证,成功返回 Sa-Token 令牌。
|
||||||
|
* 该接口无需登录即可调用。
|
||||||
|
*
|
||||||
|
* @param req - 登录请求参数
|
||||||
|
* @returns 包含认证令牌的响应
|
||||||
|
*/
|
||||||
|
export function login(req: LoginRequest) {
|
||||||
|
return requestClient.post<LoginResponse>('/account/login', req)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户注册
|
||||||
|
*
|
||||||
|
* 注册新账号。用户名长度 3-32 位,密码长度 6-64 位。
|
||||||
|
* 注册成功后自动登录并返回 token。
|
||||||
|
* 该接口无需登录即可调用。
|
||||||
|
*
|
||||||
|
* @param req - 注册请求参数
|
||||||
|
* @returns 包含认证令牌的响应
|
||||||
|
*/
|
||||||
|
export function register(req: RegisterRequest) {
|
||||||
|
return requestClient.post<LoginResponse>('/account/register', req)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
import { requestClient } from '@/api/request'
|
|
||||||
|
|
||||||
/** 账户信息 */
|
|
||||||
export interface IUserInfo {
|
|
||||||
id: number
|
|
||||||
username: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 获取账户信息 */
|
|
||||||
function getAccountInfo() {
|
|
||||||
return requestClient.get<IUserInfo>('/user/info')
|
|
||||||
}
|
|
||||||
2
src/api/modules/index.ts
Normal file
2
src/api/modules/index.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
export * from './account/index.ts'
|
||||||
|
export * from './user/index.ts'
|
||||||
1
src/api/modules/user/index.ts
Normal file
1
src/api/modules/user/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export * from './info.ts'
|
||||||
51
src/api/modules/user/info.ts
Normal file
51
src/api/modules/user/info.ts
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import { requestClient } from '@/api/request'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 性别枚举
|
||||||
|
*
|
||||||
|
* 对应 OpenAPI: Sex (x-enums)
|
||||||
|
* 1 = 男,2 = 女
|
||||||
|
*/
|
||||||
|
export const Sex = {
|
||||||
|
/** 男 */
|
||||||
|
MALE: 1,
|
||||||
|
/** 女 */
|
||||||
|
FEMALE: 2
|
||||||
|
} as const
|
||||||
|
|
||||||
|
/** 性别类型 */
|
||||||
|
export type SexType = (typeof Sex)[keyof typeof Sex]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户信息响应
|
||||||
|
*
|
||||||
|
* 对应 OpenAPI: UserInfoResponse
|
||||||
|
* 所有字段均为可选,部分字段可能为 null
|
||||||
|
*/
|
||||||
|
export interface UserInfoResponse {
|
||||||
|
/** 用户昵称,最长 16 位 */
|
||||||
|
nickName?: string
|
||||||
|
/** 头像图片 URL 地址,可能为 null */
|
||||||
|
avatar?: string | null
|
||||||
|
/** 个性签名,最长 64 位,可能为 null */
|
||||||
|
signature?: string | null
|
||||||
|
/** 年龄,可能为 null */
|
||||||
|
age?: number | null
|
||||||
|
/** 性别:1=男,2=女,可能为 null */
|
||||||
|
sex?: SexType | null
|
||||||
|
/** 生日(ISO 8601 日期格式),可能为 null */
|
||||||
|
birthday?: string | null
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前登录用户信息
|
||||||
|
*
|
||||||
|
* 根据请求头中的 saToken 获取当前登录用户的详细信息,
|
||||||
|
* 包括昵称、头像、个性签名、年龄、性别、生日。
|
||||||
|
* 需登录认证。
|
||||||
|
*
|
||||||
|
* @returns 当前登录用户的详细信息
|
||||||
|
*/
|
||||||
|
export function getUserInfo() {
|
||||||
|
return requestClient.get<UserInfoResponse>('/user/info')
|
||||||
|
}
|
||||||
@@ -63,11 +63,11 @@ class RequestClient {
|
|||||||
config.url = resolvePathParams(config.url, reqConfig.pathParams)
|
config.url = resolvePathParams(config.url, reqConfig.pathParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 跳过鉴权时不注入 token
|
// 跳过鉴权时不注入 saToken
|
||||||
if (!reqConfig?.skipAuth) {
|
if (!reqConfig?.skipAuth) {
|
||||||
const accountStore = useAccountStore()
|
const accountStore = useAccountStore()
|
||||||
if (accountStore.token) {
|
if (accountStore.token) {
|
||||||
config.headers.Authorization = `Bearer ${accountStore.token}`
|
config.headers.saToken = accountStore.token
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export interface ApiResponse<T = unknown> {
|
|||||||
export interface InternalRequestConfig extends AxiosRequestConfig {
|
export interface InternalRequestConfig extends AxiosRequestConfig {
|
||||||
/** 路径参数,替换 URL 中的 :param 占位符(如 /user/:id → /user/1) */
|
/** 路径参数,替换 URL 中的 :param 占位符(如 /user/:id → /user/1) */
|
||||||
pathParams?: Record<string, string | number>
|
pathParams?: Record<string, string | number>
|
||||||
/** 跳过鉴权注入(不携带 Authorization 头) */
|
/** 跳过鉴权注入(不携带 saToken 头) */
|
||||||
skipAuth?: boolean
|
skipAuth?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user