New file |
| | |
| | | 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; |