import Message from 'tdesign-miniprogram/message/index'; const authWhitelist = [ "/mini-app/login" ] interface RequestOption { url: string, method?: "POST" | "PUT" | "DELETE" | "OPTIONS" | "HEAD" | "TRACE" | "CONNECT", data?: any, params?: object } interface RequestConfig { baseUrl: string, timeout?: number, } const buildQueryString = (params: object) => { const queryParams = []; for (const key in params) { if (params.hasOwnProperty(key)) { const value = encodeURIComponent(params[key]); queryParams.push(`${encodeURIComponent(key)}=${value}`); } } return `?${queryParams.join('&')}`; } class HttpClient { private baseUrl: string; constructor(config: RequestConfig) { this.baseUrl = config.baseUrl } request(req: RequestOption) { let url: string; let paramsString = ""; if (req.params) { paramsString = buildQueryString(req.params) } if (req.url.startsWith("https://") || req.url.startsWith("http://")) { url = req.url } else { url = `${this.baseUrl}${req.url}${paramsString}` } const app = getApp() const header: any = {} if (!authWhitelist.includes(req.url)) { header.Authorization = `Bearer ${app.globalData.authToken}` } return new Promise(function (resolve, reject) { wx.request({ url, method: req.method, data: req.data, header, success(response) { let respData: any = response.data; let statusCode = respData.code; if (statusCode == 200) { resolve(respData) } else { Message.error({ offset: [20, 32], duration: 5000, content: respData.msg, }); reject(response.data) } }, fail(error) { Message.error({ offset: [20, 32], duration: 5000, content: error.errMsg, }); reject(error) } }) }) } } export const httpClient = new HttpClient({ baseUrl: "http://192.168.0.201:8080" }) export default httpClient