uni-app 请求封装问题(插件:vmeitime-http)

大佬们 问一个uni-app 请求封装的问题

uni-app 请求封装问题
在微信小程序中不生效
h5页面可以
有大佬知道是什么原因吗

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

你可以参考一下我这个请求

import $store from '@/store/index.js';
export default {
    common:{
        method: 'GET',
        header:{
            "content-type":"application/json"
        },
        data:{}
    },
    request(options = {}){
        options.url = 'https://api.easyshop.org.cn/api' + options.url
        options.method = options.method || this.common.method
        options.header = options.header || this.common.header

        // 验证权限token
        if($store.state.loginStatus){
            options.header.Authorization = 'Bearer ' + $store.state.token
            if(!options.header.Authorization){
                return uni.showToast({
                    title: '非法token,请重新登录',
                    icon: 'none'
                });
            }
        }

        return new Promise((res,rej)=>{
            uni.request({
                ...options,
                success: (result) => {
                    // 返回原始数据
                    if (result.data.statusCode == 401) {
                        $store.commit('logout')
                        uni.navigateTo({
                            url: '/pages/login/index'
                        });
                        uni.showToast({
                            title:result.data.message || '登录异常',
                            icon: 'none'
                        });
                        return res(result.data)
                    }

                    // 请求服务端失败
                    if (result.data.statusCode !== 200) {
                        uni.showToast({
                            title:result.data.message || '请求失败',
                            icon: 'none'
                        });
                        return res(result.data)
                    }

                    if(options.native){
                        return res(result)
                    }
                    // 成功
                    res(result.data)
                },
                fail:(error)=>{
                    uni.showToast({
                        title: error.message || '请求失败',
                        icon: 'none'
                    });
                    return rej()
                }
            });
        })
    },
    get(url,data = {},options = {}){
        options.url = url
        options.data = data
        options.method = 'GET'
        return this.request(options)
    },
    post(url,data = {},options = {}){
        options.url = url
        options.data = data
        options.method = 'POST'
        return this.request(options)
    },
    upload(url,options = {}){
        options.url = 'https://api.easyshop.org.cn/api' + url
        options.header = options.header || {}
        // 验证权限token
        if(options.token){
            options.header.token = $store.state.token
            if(!options.header.token){
                return uni.showToast({
                    title: '非法token,请重新登录',
                    icon: 'none'
                });
            }
        }

        return new Promise((res,rej)=>{
            uni.uploadFile({
                ...options,
                success: (uploadFileRes) => {
                    if(uploadFileRes.statusCode !== 200){
                        return uni.showToast({
                            title: '上传图片失败',
                            icon: 'none'
                        });
                    }
                    let data = JSON.parse(uploadFileRes.data)
                    res(data)
                },
                fail:(err)=>{
                    rej(err)
                }
            });
        })

    }
}
1年前 评论
讨论数量: 1

你可以参考一下我这个请求

import $store from '@/store/index.js';
export default {
    common:{
        method: 'GET',
        header:{
            "content-type":"application/json"
        },
        data:{}
    },
    request(options = {}){
        options.url = 'https://api.easyshop.org.cn/api' + options.url
        options.method = options.method || this.common.method
        options.header = options.header || this.common.header

        // 验证权限token
        if($store.state.loginStatus){
            options.header.Authorization = 'Bearer ' + $store.state.token
            if(!options.header.Authorization){
                return uni.showToast({
                    title: '非法token,请重新登录',
                    icon: 'none'
                });
            }
        }

        return new Promise((res,rej)=>{
            uni.request({
                ...options,
                success: (result) => {
                    // 返回原始数据
                    if (result.data.statusCode == 401) {
                        $store.commit('logout')
                        uni.navigateTo({
                            url: '/pages/login/index'
                        });
                        uni.showToast({
                            title:result.data.message || '登录异常',
                            icon: 'none'
                        });
                        return res(result.data)
                    }

                    // 请求服务端失败
                    if (result.data.statusCode !== 200) {
                        uni.showToast({
                            title:result.data.message || '请求失败',
                            icon: 'none'
                        });
                        return res(result.data)
                    }

                    if(options.native){
                        return res(result)
                    }
                    // 成功
                    res(result.data)
                },
                fail:(error)=>{
                    uni.showToast({
                        title: error.message || '请求失败',
                        icon: 'none'
                    });
                    return rej()
                }
            });
        })
    },
    get(url,data = {},options = {}){
        options.url = url
        options.data = data
        options.method = 'GET'
        return this.request(options)
    },
    post(url,data = {},options = {}){
        options.url = url
        options.data = data
        options.method = 'POST'
        return this.request(options)
    },
    upload(url,options = {}){
        options.url = 'https://api.easyshop.org.cn/api' + url
        options.header = options.header || {}
        // 验证权限token
        if(options.token){
            options.header.token = $store.state.token
            if(!options.header.token){
                return uni.showToast({
                    title: '非法token,请重新登录',
                    icon: 'none'
                });
            }
        }

        return new Promise((res,rej)=>{
            uni.uploadFile({
                ...options,
                success: (uploadFileRes) => {
                    if(uploadFileRes.statusCode !== 200){
                        return uni.showToast({
                            title: '上传图片失败',
                            icon: 'none'
                        });
                    }
                    let data = JSON.parse(uploadFileRes.data)
                    res(data)
                },
                fail:(err)=>{
                    rej(err)
                }
            });
        })

    }
}
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!