封装uniapp中的request没,具体解释在注释中有体现,
request文件
// 定义request函数
const request = function (obj) {
// 公共域名
const baseUrl = 'http://192.168.3.6:8000';
// 缓存中是否有token
const token = uni.getStorageSync('token');
// 返回一个promise
return new Promise((resolve, reject) => {
uni.showLoading({
title: '加载中',
mask: true,
});
// 请求时把token加到头部,obj是调用request传人的参数
uni.request({
url: baseUrl + obj.url,
method: obj.method,
header: {
token: token,
},
data: obj.data || {},
success: (res) => {
uni.hideLoading();
if (res.data.code === 200) {
// 此处是响应的头部中有token,更新token,没有此需求可以忽略此if判断
if (res.header.token) {
uni.setStorageSync('token', res.header.token);
}
// 返回数据,res.data.data根据后台返回格式自己查看
resolve(res.data.data);
} else {
// 返回错误码为401时,token过期,需要返回登录页面
if (res.data.code === 401) {
uni.showToast({
title: res.data.msg,
icon: 'none',
});
uni.reLaunch({
url: '/pages/login/login',
});
} else {
// 其他错误码,提示错误信息即可
uni.showToast({
title: res.data.msg,
icon: 'none',
});
}
}
},
});
});
};
// 最后导出request函数
export default request;
使用,在main.js中引入加到原型上;
import Vue from 'vue';
import App from './App';
Vue.config.productionTip = false;
// 导入request函数,加到原型上;
import request from './common/request.js';
Vue.prototype.request = request;
App.mpType = 'app';
const app = new Vue({
...App,
});
app.$mount();
使用
this.request({
url: '/m1/category',
method: 'get'
}).then((res) => {
console.log(res);
});