bug fix and performance improvements
This commit is contained in:
90
miniprogram/utils/request.ts
Normal file
90
miniprogram/utils/request.ts
Normal file
@ -0,0 +1,90 @@
|
||||
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
|
12
miniprogram/utils/settings.ts
Normal file
12
miniprogram/utils/settings.ts
Normal file
@ -0,0 +1,12 @@
|
||||
export const setToken = (token: string) => {
|
||||
getApp().globalData.authToken = token
|
||||
wx.setStorage({
|
||||
key: "auth-token",
|
||||
data: token
|
||||
})
|
||||
}
|
||||
|
||||
export const getToken = () => {
|
||||
const token = wx.getStorageSync("auth-token")
|
||||
return token
|
||||
}
|
@ -17,3 +17,5 @@ const formatNumber = (n: number) => {
|
||||
const s = n.toString()
|
||||
return s[1] ? s : '0' + s
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user