自定义封装网络请求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 });

 

posted on 2022-10-10 10:45  阿术阿术  阅读(183)  评论(0编辑  收藏  举报