Blame view

node_modules/uview-ui/libs/luch-request/index.d.ts 4.55 KB
c7add6cf   “wangming”   初始版本开发完毕
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
  type AnyObject = Record<string | number | symbol, any>

  type HttpPromise<T> = Promise<HttpResponse<T>>;

  type Tasks = UniApp.RequestTask | UniApp.UploadTask | UniApp.DownloadTask

  export interface RequestTask {

    abort: () => void;

    offHeadersReceived: () => void;

    onHeadersReceived: () => void;

  }

  export interface HttpRequestConfig<T = Tasks> {

    /** 请求基地址 */

    baseURL?: string;

    /** 请求服务器接口地址 */

    url?: string;

  

    /** 请求查询参数,自动拼接为查询字符串 */

    params?: AnyObject;

    /** 请求体参数 */

    data?: AnyObject;

  

    /** 文件对应的 key */

    name?: string;

    /** HTTP 请求中其他额外的 form data */

    formData?: AnyObject;

    /** 要上传文件资源的路径。 */

    filePath?: string;

    /** 需要上传的文件列表。使用 files 时,filePath 和 name 不生效,App、H5( 2.6.15+) */

    files?: Array<{

      name?: string;

      file?: File;

      uri: string;

    }>;

    /** 要上传的文件对象,仅H5(2.6.15+)支持 */

    file?: File;

  

    /** 请求头信息 */

    header?: AnyObject;

    /** 请求方式 */

    method?: "GET" | "POST" | "PUT" | "DELETE" | "CONNECT" | "HEAD" | "OPTIONS" | "TRACE" | "UPLOAD" | "DOWNLOAD";

    /** 如果设为 json,会尝试对返回的数据做一次 JSON.parse */

    dataType?: string;

    /** 设置响应的数据类型,支付宝小程序不支持 */

    responseType?: "text" | "arraybuffer";

    /** 自定义参数 */

    custom?: AnyObject;

    /** 超时时间,仅微信小程序(2.10.0)、支付宝小程序支持 */

    timeout?: number;

    /** DNS解析时优先使用ipv4,仅 App-Android 支持 (HBuilderX 2.8.0+) */

    firstIpv4?: boolean;

    /** 验证 ssl 证书 仅5+App安卓端支持(HBuilderX 2.3.3+) */

    sslVerify?: boolean;

    /** 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+) */

    withCredentials?: boolean;

  

    /** 返回当前请求的task, options。请勿在此处修改options。 */

    getTask?: (task: T, options: HttpRequestConfig<T>) => void;

    /**  全局自定义验证器 */

    validateStatus?: (statusCode: number) => boolean | void;

  }

  export interface HttpResponse<T = any> {

    config: HttpRequestConfig;

    statusCode: number;

    cookies: Array<string>;

    data: T;

    errMsg: string;

    header: AnyObject;

  }

  export interface HttpUploadResponse<T = any> {

    config: HttpRequestConfig;

    statusCode: number;

    data: T;

    errMsg: string;

  }

  export interface HttpDownloadResponse extends HttpResponse {

    tempFilePath: string;

  }

  export interface HttpError {

    config: HttpRequestConfig;

    statusCode?: number;

    cookies?: Array<string>;

    data?: any;

    errMsg: string;

    header?: AnyObject;

  }

  export interface HttpInterceptorManager<V, E = V> {

    use(

      onFulfilled?: (config: V) => Promise<V> | V,

      onRejected?: (config: E) => Promise<E> | E

    ): void;

    eject(id: number): void;

  }

  export abstract class HttpRequestAbstract {

    constructor(config?: HttpRequestConfig);

    config: HttpRequestConfig;

    interceptors: {

      request: HttpInterceptorManager<HttpRequestConfig, HttpRequestConfig>;

      response: HttpInterceptorManager<HttpResponse, HttpError>;

    }

    middleware<T = any>(config: HttpRequestConfig): HttpPromise<T>;

    request<T = any>(config: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

    get<T = any>(url: string, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

    upload<T = any>(url: string, config?: HttpRequestConfig<UniApp.UploadTask>): HttpPromise<T>;

    delete<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

    head<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

    post<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

    put<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

    connect<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

    options<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

    trace<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;

  

    download(url: string, config?: HttpRequestConfig<UniApp.DownloadTask>): Promise<HttpDownloadResponse>;

  

    setConfig(onSend: (config: HttpRequestConfig) => HttpRequestConfig): void;

  }

  

  declare class HttpRequest extends HttpRequestAbstract { }

  export default HttpRequest;