自定义封装网络请求uni.request() uniapp
Http.js
//Cache.js为自定义缓存功能函数
//可以换做其他存储方式
1 import Cache from "./Cache.js"; 2 3 let Http = { 4 /** 5 * POST请求封装 6 * @param {String} url 7 * @param {Object} data 8 * @param {Object} token 9 * @return {String|Object} 10 */ 11 post: function(url, data = {}, token = true) { 12 var promise = new Promise((resolve, reject) => { 13 var that = this; 14 var postData = data; 15 // 是否携带token 16 if (token) { 17 postData.token = Cache.get('token'); 18 } 19 // 发起请求 20 uni.request({ 21 url: url, 22 data: postData, 23 method: 'POST', 24 header: {'content-type': 'application/x-www-form-urlencoded'}, 25 success: function(res) { 26 //服务器返回数据 27 if (res.data.code === 1) { 28 // 调用成功方法 29 resolve(res.data.data); 30 } else if (res.data.code == 401) { 31 // uni.showModal({ 32 // content: '未登录,是否前往登录?', 33 // confirmText:'是', 34 // success: function (res) { 35 // if (res.confirm) { 36 // uni.redirectTo({url: './login1641865186493cb9c20cd6f'}); 37 // } 38 // } 39 // }); 40 } else { 41 //返回错误提示信息 42 reject(res.data.msg) 43 } 44 }, 45 fail: function(e) { 46 reject('请求错误'); 47 } 48 }); 49 }); 50 return promise; 51 }, 52 53 /** 54 * GET请求封装 55 * @param {String} url 56 * @param {Object} data 57 * @param {Object} token 58 * @return {String|Object} 59 */ 60 get:function(url, data = {}, token = true){ 61 var promise = new Promise((reslove, reject)=>{ 62 var that = this; 63 var getData = data; 64 // 是否写入token 65 if (token) { 66 getData.token = Cache.get('token'); 67 } 68 uni.request({ 69 url: url, 70 data: getData, 71 method: 'GET', 72 header: {'content-type': 'application/x-www-form-urlencoded'}, 73 sucess: function(res){ 74 //服务器返回数据 75 if (res.data.code === 0) { 76 // 调用成功方法 77 resolve(res.data.data); 78 } else { 79 //返回错误提示信息 80 reject(res.data.msg) 81 } 82 }, 83 fail: function(e) { 84 reject('请求错误'); 85 } 86 }) 87 }); 88 return promise; 89 } 90 } 91 92 export default Http;
Url.js
1 //请求路径统一管理文件 2 3 // 接口请求域名 4 const domain = ' ';//网络请求根路径 5 6 7 export default { 8 // 登录 9 login: `${domain}/login`, 10 }
test.vue
1 Http.post(url.login, { 2 //请求的主体数据 data 3 code: option.code, 4 }).then(res => { 5 console.log('获取信息res', res); 6 uni.showToast({ 7 title: '更新成功' 8 }); 9 }).catch(msg => { 10 uni.showToast({ 11 icon: 'error', 12 title: msg, 13 }); 14 });
Cache.js
1 class Cache { 2 /** 3 * 构造方法 单位秒 4 */ 5 constructor({ expire = 3600 }) { 6 // 成员属性 过期时间 7 // 毫秒 8 this.expire = new Date().getTime() + expire * 1000; 9 } 10 11 /** 12 * 设置缓存 13 * @param {Object} key 14 * @param {Object} value 15 */ 16 set(key, value) { 17 let data = { expire: this.expire, value }; 18 // 设置缓存 19 uni.setStorageSync(key, data); 20 } 21 22 /** 23 * 获取缓存 24 * @param {Object} key 25 */ 26 get(key) { 27 if (this.has(key)) { 28 return uni.getStorageSync(key).value; 29 } 30 return null; 31 } 32 33 /** 34 * 永久缓存 35 * @param {Object} key 36 * @param {Object} value 37 */ 38 forever(key, value) { 39 let expire = new Date().getTime() + 9999999999 * 1000; 40 let data = { expire, value }; 41 // 设置缓存 42 uni.setStorageSync(key, data); 43 } 44 45 /** 46 * 判断是否存在缓存 47 * @param {Object} key 48 */ 49 has(key) { 50 // 获取当前时间 51 let time = new Date().getTime(); 52 // 缓存数据 53 let data = uni.getStorageSync(key); 54 if (data != '') { 55 if (time > data.expire) { // 缓存过期 56 // 删除过期缓存 57 uni.removeStorageSync(key); 58 return false; 59 } 60 return true; 61 } 62 return false; 63 } 64 65 /** 66 * 删除 67 * @param {Object} key 68 */ 69 del(key) { 70 uni.removeStorageSync(key); 71 } 72 } 73 74 export default new Cache({ expire: 2592000 });