文章编辑器问题
This commit is contained in:
@@ -9,9 +9,12 @@ import { getAdminToken } from './auth'
|
||||
/** 未设置环境变量时使用的默认 API 地址(零配置部署) */
|
||||
const DEFAULT_API_BASE = 'https://soulapi.quwanzhi.com'
|
||||
|
||||
/** 请求超时(毫秒),避免接口无响应时一直卡在加载中 */
|
||||
/** 默认请求超时(毫秒),避免接口无响应时一直卡在加载中 */
|
||||
const REQUEST_TIMEOUT = 15000
|
||||
|
||||
/** 大请求(如保存长文章)超时 */
|
||||
export const SAVE_REQUEST_TIMEOUT = 60000
|
||||
|
||||
const getBaseUrl = (): string => {
|
||||
const url = import.meta.env.VITE_API_BASE_URL
|
||||
if (typeof url === 'string' && url.length > 0) return url.replace(/\/$/, '')
|
||||
@@ -25,7 +28,11 @@ export function apiUrl(path: string): string {
|
||||
return base ? `${base}${p}` : p
|
||||
}
|
||||
|
||||
export type RequestInitWithBody = RequestInit & { data?: unknown }
|
||||
export type RequestInitWithBody = RequestInit & {
|
||||
data?: unknown
|
||||
/** 自定义超时(毫秒),不传则用默认 15s */
|
||||
timeout?: number
|
||||
}
|
||||
|
||||
/**
|
||||
* 发起请求。path 为与现网一致的 API 路径(如 /api/admin、/api/orders)。
|
||||
@@ -46,8 +53,9 @@ export async function request<T = unknown>(
|
||||
headers.set('Content-Type', 'application/json')
|
||||
}
|
||||
const body = data !== undefined && data !== null ? JSON.stringify(data) : init.body
|
||||
const timeout = (init as RequestInitWithBody).timeout ?? REQUEST_TIMEOUT
|
||||
const controller = new AbortController()
|
||||
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT)
|
||||
const timeoutId = setTimeout(() => controller.abort(), timeout)
|
||||
const res = await fetch(url, {
|
||||
...init,
|
||||
headers,
|
||||
@@ -88,12 +96,12 @@ export function get<T = unknown>(path: string, init?: RequestInit): Promise<T> {
|
||||
}
|
||||
|
||||
/** POST */
|
||||
export function post<T = unknown>(path: string, data?: unknown, init?: RequestInit): Promise<T> {
|
||||
export function post<T = unknown>(path: string, data?: unknown, init?: RequestInitWithBody): Promise<T> {
|
||||
return request<T>(path, { ...init, method: 'POST', data })
|
||||
}
|
||||
|
||||
/** PUT */
|
||||
export function put<T = unknown>(path: string, data?: unknown, init?: RequestInit): Promise<T> {
|
||||
export function put<T = unknown>(path: string, data?: unknown, init?: RequestInitWithBody): Promise<T> {
|
||||
return request<T>(path, { ...init, method: 'PUT', data })
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user