36 lines
889 B
TypeScript
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
|
|
}
|