67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
// 引入配置
|
||
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<T = any>(config: HttpRequestConfig): Promise<T> {
|
||
return new Promise((resolve, reject) => {
|
||
http.request(config).then((res: HttpResponse<IResponse<T>>) => {
|
||
// console.log('[ res ] >', res);
|
||
const { data } = res.data;
|
||
resolve(data as T);
|
||
}).catch((err: any) => {
|
||
console.error('[ err ] >', err);
|
||
reject(err);
|
||
});
|
||
});
|
||
}
|
||
|
||
export function get<T = any>(url: string, config?: HttpRequestConfig): Promise<T> {
|
||
return request({ ...config, url, method: 'GET' });
|
||
}
|
||
|
||
export function post<T = any>(url: string, config?: HttpRequestConfig): Promise<T> {
|
||
return request({ ...config, url, method: 'POST' });
|
||
}
|
||
|
||
export function put<T = any>(url: string, config?: HttpRequestConfig): Promise<T> {
|
||
return request({ ...config, url, method: 'PUT' });
|
||
}
|
||
|
||
export function patch<T = any>(url: string, config?: HttpRequestConfig): Promise<T> {
|
||
return request({ ...config, url, method: 'PATCH' });
|
||
}
|
||
|
||
export function upload<T = any>(url: string, config?: HttpRequestConfig): Promise<T> {
|
||
return request({ ...config, url, method: 'UPLOAD' });
|
||
}
|
||
|
||
export function download<T = any>(url: string, config?: HttpRequestConfig): Promise<T> {
|
||
return request({ ...config, url, method: 'DOWNLOAD' });
|
||
}
|
||
|
||
export default setupRequest;
|