/** * 基础 request method, 基于 CNRequest 实现 (背后是 axios 实例). * 这里可以做一些业务的特殊定制, 比如说统一的埋点上报, 以及通用的网络错误处理. */ import { useRequest } from 'ahooks'; import type { CnRequestConfig } from '@cainiaofe/cn-request'; import type { Plugin, Result } from 'ahooks/lib/useRequest/src/types'; import type { IRequestConfig, IResponse } from './types'; import { packRequest } from './pack-request'; import { getRequestService } from './get-request-service'; export { packRequest, getRequestService }; export async function unpackRequest(options: CnRequestConfig): Promise { const { data, success, errorMsg } = await packRequest>(options); if (!success) { throw new Error(errorMsg); } return data; } export function useCnRequest< IResponseData = unknown, IRequestParam = unknown, IFormatResult = IResponseData, IFormatParam = unknown, >( requestConfig: IRequestConfig< IResponseData, IRequestParam, IFormatResult, IFormatParam >, plugins?: Array>, ): Result { const service = getRequestService(requestConfig); const ready = Boolean(requestConfig) && Boolean(requestConfig.url || requestConfig.service); return useRequest( service, { ready, ...requestConfig }, plugins, ); } export * from './types';