gtht-miniapp-sdk
Version:
gtht-miniapp-sdk 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
228 lines (227 loc) • 8.25 kB
TypeScript
interface UploadFileOptionFiles {
/**
* multipart 提交时,表单的项目名,默认为 file,如果 name 不填或填的值相同,可能导致服务端读取文件时只能读取到一个文件。
*/
name?: string;
/**
* 要上传的文件对象
*/
file?: File;
/**
* 要上传文件资源的路径
*/
uri?: string;
}
export interface RequestConfig<D extends string | AnyObject | ArrayBuffer = any, E extends Record<string, any> = any, Task extends UniApp.RequestTask | UniApp.UploadTask | UniApp.DownloadTask = UniApp.RequestTask> {
/**
* 自动加在 `url` 前面,除非 `url` 是一个绝对 URL
*/
baseURL?: string;
/**
* 与请求一起发送的 URL 参数
*/
params?: AnyObject;
/**
* 获取 uni.request 返回值,可用于中断请求
*/
getTask?: (task: Task, config: RequestConfig<D, E>) => void;
/**
* 请求的参数
*/
data?: D;
/**
* 额外的请求参数,用于实现自定义的行为
*/
extra?: E;
/**
* 资源url
*/
url?: string;
/**
* 设置请求的 header,header 中不能设置 Referer。
*/
header?: any;
/**
* 默认为 GET
* 可以是:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT
*/
method?: 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT' | 'DOWNLOAD' | 'UPLOAD';
/**
* 超时时间
*/
timeout?: number;
/**
* 如果设为json,会尝试对返回的数据做一次 JSON.parse
*/
dataType?: string;
/**
* 设置响应的数据类型。合法值:text、arraybuffer
*/
responseType?: string;
/**
* 验证 ssl 证书
*/
sslVerify?: boolean;
/**
* 跨域请求时是否携带凭证
*/
withCredentials?: boolean;
/**
* DNS解析时优先使用 ipv4
*/
firstIpv4?: boolean;
/**
* 开启 http2
*/
enableHttp2?: boolean;
/**
* 开启 quic
*/
enableQuic?: boolean;
/**
* 开启 cache
*/
enableCache?: boolean;
/**
* 是否开启 HttpDNS 服务。如开启,需要同时填入 httpDNSServiceId 。 HttpDNS 用法详见 [移动解析HttpDNS](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/HTTPDNS.html)
*/
enableHttpDNS?: boolean;
/**
* HttpDNS 服务商 Id。 HttpDNS 用法详见 [移动解析HttpDNS](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/HTTPDNS.html)
*/
httpDNSServiceId?: boolean;
/**
* 开启 transfer-encoding chunked
*/
enableChunked?: boolean;
/**
* wifi下使用移动网络发送请求
*/
forceCellularNetwork?: boolean;
/**
* 默认 false,开启后可在headers中编辑cookie(支付宝小程序10.2.33版本开始支持)
*/
enableCookie?: boolean;
/**
* 是否开启云加速(详见[云加速服务](https://smartprogram.baidu.com/docs/develop/extended/component-codeless/cloud-speed/introduction/))
*/
cloudCache?: object | boolean;
/**
* 控制当前请求是否延时至首屏内容渲染后发送
*/
defer?: boolean;
/**
* 需要上传的文件列表。App、H5( 2.6.15+)
*/
files?: UploadFileOptionFiles[];
/**
* 文件类型,image/video/audio,仅支付宝小程序,且必填。
* - image: 图像
* - video: 视频
* - audio: 音频
*/
fileType?: 'image' | 'video' | 'audio';
/**
* 要上传的文件对象。 仅H5(2.6.15+)支持
*/
file?: File;
/**
* 要上传/下载文件资源的路径
*/
filePath?: string;
/**
* 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
*/
name?: string;
/**
* HTTP 请求中其他额外的 form data
*/
formData?: AnyObject;
}
export interface Response<T = any, D extends string | AnyObject | ArrayBuffer = any> {
/**
* 开发者服务器返回的数据
*/
data: T;
/**
* 开发者服务器返回的 HTTP 状态码
*/
statusCode: number;
/**
* 开发者服务器返回的 HTTP Response Header
*/
header: any;
/**
* 开发者服务器返回的 cookies,格式为字符串数组
*/
cookies: string[];
/**
* 请求的配置信息
*/
config: RequestConfig<D>;
/**
* 错误信息
*/
errMsg: string;
/**
* 临时文件路径,下载后的文件会存储到一个临时文件。微信小程序、支付宝小程序、百度小程序、抖音小程序、飞书小程序
*/
tempFilePath: string;
/**
* 下载文件保存的路径(本地临时文件)。入参未指定 filePath 的情况下可用。支付宝小程序
*/
apFilePath: string;
/**
* 用户文件路径 (本地路径)。传入 filePath 时会返回,跟传入的 filePath 一致。微信小程序、支付宝小程序、抖音小程序、飞书小程序
*/
filePath: string;
/**
* 文件内容。QQ小程序
*/
fileContent?: any;
/**
* 需要基础库: `2.10.4`
*
* 网络请求过程中一些调试信息,[查看详细说明](https://developers.weixin.qq.com/miniprogram/dev/framework/performance/network.html)
*/
profile?: UniApp.RequestProfile;
}
export interface ErrorResponse<D extends string | AnyObject | ArrayBuffer = any> {
/**
* 请求的配置信息
*/
config: RequestConfig<D>;
/**
* 错误信息
*/
errMsg: string;
}
declare function createInterceptors<T, U, E>(): {
request: {
use: (onFulfilled: (value: T) => T | Promise<T>, onRejected?: ((error: E) => any) | null | undefined) => void;
resolve: (data: T) => Promise<T>;
reject: (error: any) => Promise<any>;
};
response: {
use: (onFulfilled: (value: U) => U | Promise<U>, onRejected?: ((error: E) => any) | null | undefined) => void;
resolve: (data: U) => Promise<U>;
reject: (error: any) => Promise<any>;
};
};
export declare class Request<E extends Record<string, any> = any> {
readonly interceptors: ReturnType<typeof createInterceptors<RequestConfig<any, E, any>, Response, ErrorResponse>>;
protected defaultConfig: RequestConfig;
constructor(defaultConfig?: RequestConfig);
request<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any, Task extends UniApp.RequestTask | UniApp.UploadTask | UniApp.DownloadTask = UniApp.RequestTask>(config: RequestConfig<D, E, Task>): Promise<R>;
get<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, config?: RequestConfig<D, E>): Promise<R>;
head<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, config?: RequestConfig<D, E>): Promise<R>;
connect<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, config?: RequestConfig<D, E>): Promise<R>;
trace<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, config?: RequestConfig<D, E>): Promise<R>;
post<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, data?: D, config?: RequestConfig<D, E>): Promise<R>;
put<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, data?: D, config?: RequestConfig<D, E>): Promise<R>;
delete<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, data?: D, config?: RequestConfig<D, E>): Promise<R>;
options<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, data?: D, config?: RequestConfig<D, E>): Promise<R>;
upload<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, config?: RequestConfig<D, E, UniApp.UploadTask>): Promise<R>;
download<T = any, R = Response<T>, D extends string | AnyObject | ArrayBuffer = any>(url: string, config?: RequestConfig<D, E, UniApp.DownloadTask>): Promise<R>;
}
export {};