設(shè)置request超時(shí)時(shí)間
飛書小程序自帶request網(wǎng)絡(luò)請(qǐng)求包责嚷,可以通過app.json配置網(wǎng)絡(luò)超時(shí)時(shí)間:
"networkTimeout": {
"request": 5000,
"connectSocket": 10000,
"uploadFile": 10000,
"downloadFile": 10000
}
封裝網(wǎng)絡(luò)請(qǐng)求
在程序中到處寫tt.request()并不可取腰懂,一般我們需要將網(wǎng)絡(luò)請(qǐng)求進(jìn)行封裝,簡(jiǎn)要方案:
1钞澳、get請(qǐng)求
2狭姨、post請(qǐng)求
3躺枕、如果網(wǎng)絡(luò)反饋401(登錄信息失效),則調(diào)用login()方法重新登錄氓栈,再發(fā)起請(qǐng)求
login()方法這里不贅述渣磷。
import config from '../config/config'
import { login } from './auth'
let token = tt.getStorageSync("userToken")
let http = {
get: function (url, param={}) {
let headers = {}
if (!url.includes('login')) {
headers = {
Authorization: 'Token ' + token
}
}
return new Promise((resolve, reject) => {
tt.request({
url: `${config.serverUrl}` + url,
header: headers,
method: "get",
success(res) {
if (res.statusCode === 401) {
// 如果返回狀態(tài)碼為401,則進(jìn)行重新登錄
login().then(newToken => {
// 登錄成功后更新token
token = newToken
// 重新發(fā)起請(qǐng)求
return http.get(url, param)
}).then(data => {
resolve(data)
}).catch(err => {
reject(err)
})
} else {
resolve(res.data)
}
},
fail(err) {
tt.showToast({
title: '網(wǎng)絡(luò)請(qǐng)求出錯(cuò)授瘦,請(qǐng)稍后重試',
duration: 3000,
showCancel: false,
icon: 'none'
})
reject(err)
}
})
})
},
post: function (url, param={}) {
let headers = {}
if (!url.includes('login')) {
headers = {
Authorization: 'Token ' + token
}
}
return new Promise((resolve, reject) => {
tt.request({
url: `${config.serverUrl}` + url,
header: headers,
method: 'post',
data: JSON.stringify(param),
success(res) {
if (res.statusCode === 401) {
// 如果返回狀態(tài)碼為401醋界,則進(jìn)行重新登錄
login().then(newToken => {
// 登錄成功后更新token
token = newToken
// 重新發(fā)起請(qǐng)求
return http.post(url, param)
}).then(data => {
resolve(data)
}).catch(err => {
reject(err)
})
} else {
resolve(res.data)
}
},
fail(err) {
tt.showToast({
title: '網(wǎng)絡(luò)請(qǐng)求出錯(cuò),請(qǐng)稍后重試',
duration: 3000,
showCancel: false,
icon: 'none'
})
reject(err)
}
})
})
}
}
export default http
使用
封裝后提完,我們?cè)谛枰W(wǎng)絡(luò)請(qǐng)求的地方直接調(diào)用即可:
import http from "./index"
export function getUserInfo(token) {
const url = '/api/users/user-info/current-user/'
return http.get(url)
}
以上形纺。
因水平有限,上述內(nèi)容可能存在問題徒欣,如發(fā)現(xiàn)請(qǐng)幫忙指出逐样,避免誤導(dǎo)更多人。