uniapp网络请求封装

434 阅读1分钟

在项目中新建common文件夹,在文件夹中新建http.interceptor.js:

const install = (Vue, vm) => {undefined Vue.prototype.u.http.setConfig(undefinedbaseUrl:https://admin.yin10000.com,header:undefinedMiniId:1,token:,,originalData:true,);//请求拦截,配置Token等参数Vue.prototype.u.http.setConfig({undefined baseUrl: 'https://admin.yin10000.com', header: {undefined 'MiniId': 1, 'token': '', }, originalData: true, }); // 请求拦截,配置Token等参数 Vue.prototype.u.http.interceptor.request = (config) => {undefined const token = uni.getStorageSync('userInfo'); config.header.MiniId = 1 if (token) {undefined config.header.token = token.token; } } // 响应拦截,判断状态码是否通过 Vue.prototype.$u.http.interceptor.response = (res) => {undefined if (res.data.code == 4000) {undefined uni.login({undefined success: (res) => {undefined console.log(res.code) uni.setStorageSync('code',res.code) } })

        uni.navigateTo({undefined
            url: '/pages/Me/MeCom/NotLogged/NotLogged'
        })
        // });
        return res.data;
    }
   if(res.statusCode == 200) {undefined
        // 如果把originalData设置为了true,这里return回什么,this.$u.post的then回调中就会得到什么
        return res.data;  
    } else{undefined
        return false;
    }
}

} export default {undefined install }

在main.js中:

import httpInterceptor from '@/common/http.interceptor.js'; Vue.use(httpInterceptor, app);

在组件中使用:

getItemList(page) {undefined this.$u.post('/single/order/order_list', {undefined type: this.current, page:page?page:1 }).then(res => {undefined console.log(res.data) this.itemList =page?this.itemList.concat(res.data.data):res.data.data this.total = res.data.total this.last_page = res.data.last_page this.per_page = res.data.per_page this.current_page = res.data.current_page })

        }