types.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import type {
  2. AxiosRequestConfig,
  3. AxiosResponse,
  4. CreateAxiosDefaults,
  5. InternalAxiosRequestConfig,
  6. } from 'axios';
  7. type ExtendOptions = {
  8. /** 响应数据的返回方式。
  9. * raw: 原始的AxiosResponse,包括headers、status等,不做是否成功请求的检查。
  10. * body: 返回响应数据的BODY部分(只会根据status检查请求是否成功,忽略对code的判断,这种情况下应由调用方检查请求是否成功)。
  11. * data: 解构响应的BODY数据,只返回其中的data节点数据(会检查status和code是否为成功状态)。
  12. */
  13. responseReturn?: 'body' | 'data' | 'raw';
  14. };
  15. type RequestClientConfig<T = any> = AxiosRequestConfig<T> & ExtendOptions;
  16. type RequestResponse<T = any> = AxiosResponse<T> & {
  17. config: RequestClientConfig<T>;
  18. };
  19. type RequestContentType =
  20. | 'application/json;charset=utf-8'
  21. | 'application/octet-stream;charset=utf-8'
  22. | 'application/x-www-form-urlencoded;charset=utf-8'
  23. | 'multipart/form-data;charset=utf-8';
  24. type RequestClientOptions = CreateAxiosDefaults & ExtendOptions;
  25. interface RequestInterceptorConfig {
  26. fulfilled?: (
  27. config: ExtendOptions & InternalAxiosRequestConfig,
  28. ) =>
  29. | (ExtendOptions & InternalAxiosRequestConfig<any>)
  30. | Promise<ExtendOptions & InternalAxiosRequestConfig<any>>;
  31. rejected?: (error: any) => any;
  32. }
  33. interface ResponseInterceptorConfig<T = any> {
  34. fulfilled?: (
  35. response: RequestResponse<T>,
  36. ) => Promise<RequestResponse> | RequestResponse;
  37. rejected?: (error: any) => any;
  38. }
  39. type MakeErrorMessageFn = (message: string, error: any) => void;
  40. interface HttpResponse<T = any> {
  41. /**
  42. * 0 表示成功 其他表示失败
  43. * 0 means success, others means fail
  44. */
  45. code: number;
  46. data: T;
  47. message: string;
  48. }
  49. export type {
  50. HttpResponse,
  51. MakeErrorMessageFn,
  52. RequestClientConfig,
  53. RequestClientOptions,
  54. RequestContentType,
  55. RequestInterceptorConfig,
  56. RequestResponse,
  57. ResponseInterceptorConfig,
  58. };