Files
crawler-plugin/frontend-vue/src/shared/api/call.ts
T

36 lines
889 B
TypeScript

import { http, type RequestOptions } from './http.ts'
export interface JavaApiResponse<T> {
success: boolean
message: string
data: T | null
}
export interface LegacyApiSuccess<T> {
success: true
msg?: string
data?: T
}
export async function callJava<T = unknown, D = unknown>(
config: RequestOptions<D>,
): Promise<T> {
const body = await http.request<unknown, unknown, D>(config)
const data = (body as { data?: unknown }).data ?? body
if (
data &&
typeof data === 'object' &&
'success' in data &&
typeof (data as { success: unknown }).success === 'boolean'
) {
const wrapped = data as { success: boolean; message?: string; msg?: string; error?: string; data?: T }
if (!wrapped.success) {
throw new Error(wrapped.message || wrapped.msg || wrapped.error || '请求失败')
}
return wrapped.data as T
}
return data as T
}