创建 config.js 文件管理环境
class Config {}
const version = '/v1.1.12'
Config.API_HOST = 'https://xxxxxx.com' + version
export default Config
创建 base.js 封装需要用到的请求
import Config from './config.js';
class Base {
static getHeader() {
return {
'Content-Type': 'application/json',
'Authorization': wx.getStorageSync(TOKEN),
'Accept-Language': 'zh'
};
}
request(params, noLogin) {
return new Promise((resolve, reject) => {
let url = Config.API_HOST + params.url;
wx.request({
url: Config.API_HOST + params.url,
data: params.data || {},
method: params.method || 'GET',
header: Base.getHeader(),
success: (res) => {
if (res.statusCode == 200) {
let data = res.data;
resolve(data);
} else {
console.info('statusCode', res.statusCode)
if (res.statusCode == 401) {
this.login().then((res) => {
console.log('登录成功后重新发起请求--->>', res);
this.request(params, noLogin).then(resolve).catch(reject);
});
} else {
console.log('请求错误,请重试', res)
}
}
},
fail: (res) => {
wx.showModal({
title: '提示',
content: "网络请求失败,请确保网络是否正常",
showCancel: false,
success: function(fail) {
reject(res);
}
});
}
})
})
}
get(url, data = {}) {
return this.request({
url: url,
data: data
});
}
post(url, data = {}) {
return this.request({
url: url,
data: data,
method: 'POST'
});
}
login() {
let _this = this;
return new Promise((resolve, reject) => {
wx.login({
success: function(login) {
_this.request({
url: '/wechatMiniLogin',
data: {
code: login.code,
},
method: 'POST'
}).then((res) => {
wx.setStorageSync(TOKEN, res.data.token);
wx.setStorageSync(USER_INFO, res.data.userInfo);
resolve(res);
}).catch(reject);
}
})
});
}
uploadFile(uploadUrl, filePath, formData = {}) {
return new Promise((resolve, reject) => {
wx.uploadFile({
url: Config.API_HOST + uploadUrl,
filePath: filePath,
name: 'file',
formData: formData,
header: {
'Content-Type': 'multipart/form-data',
'X-Token': wx.getStorageSync(TOKEN)
},
success: (res) => {
resolve(res.data);
},
fail: (res) => {
wx.showModal({
title: '提示',
content: "网络请求失败,请确保网络是否正常",
showCancel: false,
success: function (fail) {
reject(res);
}
});
}
})
})
}
}
export default Base;
创建api.js
import Base from './base.js'
import Config from './config.js'
export default class Api extends Base {
getLoginUser(params) {
return new Promise((resolve, reject) => {
this.post('/user/getLoginUser', params).then(res => {
resolve(res)
})
})
}
updateUser(params) {
return new Promise((resolve, reject) => {
this.post('/user/updateUser', params).then(res => {
resolve(res)
})
})
}
}
页面中使用
import Api from '/utils/api.js'
var api = new Api()
let params = '123'
api.getLoginUser(params).then(res => {
console.log(res)
}