Files
xh-medical-sign-web/patient-h5/src/utils/api-response.ts
T

30 lines
750 B
TypeScript

import type { ApiResponse } from '@/api/types'
export class ApiResponseError extends Error {
readonly code: number | string
readonly traceId?: string
constructor(response: ApiResponse<unknown>) {
super(response.message || '签署服务请求失败')
this.name = 'ApiResponseError'
this.code = response.code
this.traceId = response.traceId
}
}
export function isSuccessCode(code: number | string) {
return code === 0 || code === '0'
}
export function unwrapApiResponse<T>(response: ApiResponse<T>): T {
if (!isSuccessCode(response.code)) {
throw new ApiResponseError(response)
}
if (response.data === null) {
throw new Error(response.message || '签署服务未返回数据')
}
return response.data
}