// 引入配置 import type { HttpRequestConfig, HttpResponse } from 'uview-plus/libs/luch-request/index'; import type { IResponse } from './types'; import Request from 'uview-plus/libs/luch-request/index'; import { requestInterceptors, responseInterceptors } from './interceptors'; const http = new Request(); // 引入拦截器配置 export function setupRequest() { http.setConfig((defaultConfig: HttpRequestConfig) => { /* defaultConfig 为默认全局配置 */ defaultConfig.baseURL = import.meta.env.VITE_API_BASE_URL; // 设置超时时间为 5 秒 defaultConfig.timeout = 5000; // #ifdef H5 if (import.meta.env.VITE_APP_PROXY === 'true') { // H5开发环境使用代理,baseURL设置为空字符串 // 请求路径中的 /api 会被代理转发到 VITE_API_BASE_URL defaultConfig.baseURL = ''; } // #endif return defaultConfig; }); requestInterceptors(http); responseInterceptors(http); } export function request(config: HttpRequestConfig): Promise { return new Promise((resolve, reject) => { http.request(config).then((res: HttpResponse>) => { // console.log('[ res ] >', res); const { data } = res.data; resolve(data as T); }).catch((err: any) => { console.error('[ err ] >', err); reject(err); }); }); } export function get(url: string, config?: HttpRequestConfig): Promise { return request({ ...config, url, method: 'GET' }); } export function post(url: string, config?: HttpRequestConfig): Promise { return request({ ...config, url, method: 'POST' }); } export function put(url: string, config?: HttpRequestConfig): Promise { return request({ ...config, url, method: 'PUT' }); } export function patch(url: string, config?: HttpRequestConfig): Promise { return request({ ...config, url, method: 'PATCH' }); } export function upload(url: string, config?: HttpRequestConfig): Promise { return request({ ...config, url, method: 'UPLOAD' }); } export function download(url: string, config?: HttpRequestConfig): Promise { return request({ ...config, url, method: 'DOWNLOAD' }); } export default setupRequest;