UNPKG

hy-app

Version:

修复上传提示功能

139 lines (130 loc) 3.21 kB
import type { HttpRequestConfig, HttpInterceptorManager, HttpResponse, } from "../typing"; import { objectToUrlParams } from "../utils"; export default class Http { /** * 默认请求配置 */ config: HttpRequestConfig = { baseURL: "", url: "", data: {}, dataType: "json", header: {}, method: "POST", responseType: "text", timeout: 10000, }; /** * @description 拦截器 */ interceptor = { /** * @description 请求拦截 请求配置 * @param config */ request: (config: HttpRequestConfig) => { if (config) { this.requestBefore(config); } }, /** * @description 响应拦截 * @param success 成功响应 * @param fail 失败响应 */ response: ( success: (response: HttpResponse) => any, fail: (error: HttpResponse) => any, ) => { if (success) { this.responseSuccess = success; } if (fail) { this.responseFail = fail; } }, }; /** * @description 请求拦截 * @param config 请求配置 */ requestBefore(config: HttpRequestConfig) { return config; } /** * @description 成功响应 * @param response */ responseSuccess(response: UniNamespace.RequestSuccessCallbackResult) { return response; } /** * @description 失败响应 * @param response */ responseFail(response: UniNamespace.GeneralCallbackResult) { return response; } /** * @description uni异步请求 * @param options 请求配置 */ async request(options: Record<string, any>) { options.url = this.config.baseURL + options.url || this.config.url; options.data = options.data || this.config.data; options.header = options.header || this.config.header; options.method = options.method || this.config.method; options.responseType = options.responseType || this.config.responseType; options.timeout = options.timeout || this.config.timeout; return new Promise<any>((resolve, reject) => { options = this.requestBefore(options); uni.request({ url: options.url, data: options.data, header: options.header, method: options.method, timeout: options.timeout, success: (response: UniNamespace.RequestSuccessCallbackResult) => { resolve(this.responseSuccess(response)); }, fail: (error: UniNamespace.GeneralCallbackResult) => { reject(this.responseFail(error)); }, }); }); } /** * post请求 * @param url 请求地址 * @param params 请求JSON参数 * @param options 请求配置 */ post(url: string, params?: any, options?: Record<string, any>) { return this.request({ url: url, method: "POST", data: params, ...options, }); } /** * get请求 * @param url 请求地址 * @param params URL查询参数 * @param options 请求配置 */ get(url: string, params?: any, options?: Record<string, any>) { if (params) { url += "?" + objectToUrlParams(params); } return this.request({ url: url, method: "GET", ...options, }); } }