import { BaseConfiguration, ExtraConfiguration, LifeCycle, SuccessParam } from 'miniprogram-network-life-cycle'; import { GeneralCallbackResult, ParamsType } from 'miniprogram-network-utils'; /** * 小程序HTTP 请求生命周期封装 * @example * `const http = new Http({ baseURL: 'https://api.newfuture.cc/', retry: 3 });` * @template TExt 扩展参数属性类型 */ export declare class Http extends LifeCycle, FullRequestOption> { /** * 新建 Http实列 * @param config 全局默认配置 * @param request 请求处理方法,默认使用请求队列处理 * @param listeners 请求事件监听 */ constructor(config?: RequestInit, request?: (o: TExt & wx.RequestOption) => wx.RequestTask, listeners?: Http['Listeners']); /** * Object 参数发起请求 * @param options 每个请求的全部配置信息,未设置内容使用默认全局配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData request请求参数的格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ request, TData extends BaseData = BaseData, TParams = ParamsType>(options: RequestOption): Promise; /** * 发送一个 request请求 * @param method 操作方法,和小程序一致 * @param action 请求操作URL,支持{name}格式参数 * @param data 可转未query string * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData request请求参数的格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ request, TData extends BaseData = BaseData, TParams = ParamsType>(method: NonNullable, action: string, data?: TData, config?: RequestConfig): Promise; /** * GET 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 可转为query string * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData get query data请求参数的格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ get, TData extends BaseData = BaseData, TParams = ParamsType>(action: string, data?: TData, config?: RequestConfig): Promise; /** * POST 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 操作数据,默认会以json方式上传 * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData post data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ post, TData extends BaseData = BaseData, TParams = ParamsType>(action: string, data?: TData, config?: RequestConfig): Promise; /** * PUT 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 操作数据,默认会以json方式上传 * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData post data数据格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ put, TData extends BaseData = BaseData, TParams = ParamsType>(action: string, data?: TData, config?: RequestConfig): Promise; /** * DELETE 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 可转为query string * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData put query data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ delete, TData extends BaseData = BaseData, TParams = ParamsType>(action: string, data?: TData, config?: RequestConfig): Promise; /** * HEAD 操作 * @param action 请求操作URL,支持{name}格式参数 * @param data 可转为query string * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData head query data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ head, TData extends BaseData = BaseData, TParams = ParamsType>(action: string, data?: TData, config?: RequestConfig): Promise; /** * Patch 操作 * 由于小程序不支持PATCH 方法 * 采用X-HTTP-Method-Override兼容处理,需要服务器端支持 * @param action 请求操作URL,支持{name}格式参数 * @param data 操作数据,默认会以json方式上传 * @param config 可覆盖默认配置 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TData patch data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ patch, TData extends BaseData = BaseData, TParams = ParamsType>(action: string, data?: TData, config?: RequestConfig): Promise; } /** * Request Data支持的全部数据格式 */ declare type BaseData = string | object | ArrayBuffer | undefined; /** * 构造函数 默认配置信息 * (创建Request的配置信息) */ export interface RequestInit extends BaseConfiguration, T & wx.RequestOption, TReturn> { /** * response data type */ responseType?: 'json' | 'text' | 'arraybuffer'; } /** * 单个请求的额外配置信息 * @template TParams 参数类型 * @template TExt 扩展配置 */ export declare type RequestConfig = Partial & Partial & ExtraConfiguration> & { /** * 路径参数 * URL Path Params * the path parameters to be replace in path * Must be a plain `object` or `array` * @example * url = "/{ID}/status" * param = {ID: 12345} * request url will be /1234/status */ params?: TParams; }; interface UniqueRequestOption { /** * 请求的地址 */ url: string; /** * 请求方法 * HTTP request mthod: GET POST ... */ method?: wx.RequestOption['method']; /** * 请求数据 * reqeust data * * **data 数据说明:** * * 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下: * * * 对于 `GET` 方法的数据,会将数据转换成 query string(encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...) * * 对于 `POST` 方法且 `header['content-type']` 为 `application/json` 的数据,会对数据进行 JSON 序列化 * * 对于 `POST` 方法且 `header['content-type']` 为 `application/x-www-form-urlencoded` 的数据,会将数据转换成 query string * (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...) */ data?: TData; } /** * 每个HTTP Request请求的全部可配置信息 * @template TData 数据data的类型限制 * @template TParams 参数类型 * @template TExt 扩展信息 */ export declare type RequestOption = RequestConfig & UniqueRequestOption; /** * 发送一个请求的完整可配置信息 * @template TExtend 扩展信息 * @template TData 数据data的类型限制 */ export interface FullRequestOption extends RequestInit, ExtraConfiguration, UniqueRequestOption { } export declare namespace wx { function request(option: RequestOption): RequestTask; interface RequestOption { /** 开发者服务器接口地址 */ url: string; /** 响应的数据类型 * * 可选值: * - 'text': 响应的数据为文本; * - 'arraybuffer': 响应的数据为 ArrayBuffer; * * 最低基础库: `1.7.0` */ responseType?: 'text' | 'arraybuffer'; /** 返回的数据格式 * * 可选值: * - 'json': 返回的数据为 JSON,返回后会对返回的数据进行一次 JSON.parse; * - '其他': 不对返回的内容进行 JSON.parse; */ dataType?: 'json' | '其他'; /** HTTP 请求方法 * * 可选值: * - 'OPTIONS': HTTP 请求 OPTIONS; * - 'GET': HTTP 请求 GET; * - 'HEAD': HTTP 请求 HEAD; * - 'POST': HTTP 请求 POST; * - 'PUT': HTTP 请求 PUT; * - 'DELETE': HTTP 请求 DELETE; * - 'TRACE': HTTP 请求 TRACE; * - 'CONNECT': HTTP 请求 CONNECT; */ method?: 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT'; /** 设置请求的 header,header 中不能设置 Referer。 * * `content-type` 默认为 `application/json */ header?: object; /** * 请求的参数 */ data?: string | object | ArrayBuffer; /** * 开启 http2 */ enableHttp2?: boolean; /** * 开启 quic */ enableQuic?: boolean; /** * 开启 缓存 */ enableCache?: boolean; /** * 开启 HttpDNS */ enableHttpDNS?: boolean; /** * HttpDNS 服务商 Id。 HttpDNS 用法详见 移动解析HttpDNS */ httpDNSServiceId?: string | boolean; /** * 开启 transfer-encoding chunked。 */ enableChunked?: boolean; /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete?(res: { errMsg: string; }): void; /** * 接口调用失败的回调函数 */ fail?(res: { errMsg: string; }): void; /** * 接口调用成功的回调函数 */ success?(result: HttpResponse): void; } interface RequestTask { /** [RequestTask.abort()](RequestTask.abort.md) * * 中断请求任务 * * 最低基础库: `1.4.0` */ abort(): void; /** [RequestTask.onHeadersReceived(function callback)](RequestTask.onHeadersReceived.md) * * 监听HTTP Response Header 事件,会比请求完成事件更早 * * 最低基础库: `2.1.0` */ onHeadersReceived( /** HTTP Response Header 事件的回调函数 */ callback: (result?: { header: object; }) => void): void; } } export interface HttpResponse extends GeneralCallbackResult { /** 开发者服务器返回的 HTTP Response Header * * 最低基础库: `1.2.0` */ header: object; /** 开发者服务器返回的 HTTP 状态码 */ statusCode: number; /** 开发者服务器返回的数据 */ data: string | object | ArrayBuffer; /** * cookie信息2.4.2以上版本有 * 非正式支持 */ cookies?: ({ domain: string; httpOnly: boolean; name: string; path: string; value: string; } | string)[]; } export {}; //# sourceMappingURL=http.d.ts.map