uniapp请求方法封装支持请求头带token验证

var server = '请求地址';
const session_id = '后台提供';
const code = '后台提供';
import md5 from 'js-md5';
//请求接口
export const request = (url, data, method) => {
    return new Promise((resolve, reject) => {
        let sign = get_sign(data, code, session_id);
        var access_token = uni.getStorageSync('access_token');
        var header = {
            'content-type': 'application/x-www-form-urlencoded',
            sign: sign,
            accesstoken: access_token
        };
        uni.request({
            url: server + url,
            method: method || 'POST',
            data: data || {},
            header: header,
            success: (res) => {
                if (res.data.status !== 0) {}
                resolve(res.data)
            },
            fail: (err) => {
                console.log(err);
                uni.showToast({
                    title: '嘤嘤嘤!!!网络出错了哦',
                    icon: 'none'
                })
                reject(err)
            }

        })
    })
}
//文件上传
export const uploadFile = (url, file, data) => {
    return new Promise((resolve, reject) => {
        let sign = get_sign(data, code, session_id);
        var access_token = uni.getStorageSync('access_token');
        var header = {
            'Content-Type': 'multipart/form-data',
            sign: sign,
            accesstoken: access_token
        };
        uni.uploadFile({
            url: server + url,
            method: "POST",
            filePath: file['value'],
            name: file['field'],
            success: (res) => {
                resolve(JSON.parse(res.data))
            },
            fail: (err) => {
                console.log(err);
                uni.showToast({
                    title: '嘤嘤嘤!!!网络出错了哦',
                    icon: 'none'
                })
                reject(err)
            }
        })
    })
}
//微信登录
export const wxLogin = () => {

    return new Promise((resolve, reject) => {
            let _this = this;
            uni.showLoading({
                title: '微信授权中...'
            });
            uni.getUserProfile({
                lang: 'zh_CN',
                desc: '用于完善会员信息',
                success: (infoRes) => {
                    var code = uni.getStorageSync('weixin_login');
                    var share_token = uni.getStorageSync('share_token');
                    request('info/wechat_login', {
                        code: code,
                        iv: infoRes.iv,
                        encryptedData: infoRes
                            .encryptedData,
                        share_token: share_token
                    }).then(result => {
                        uni.hideLoading();
                        if (result.code == 1) uni.setStorageSync('access_token', result.data
                            .user_token);
                        resolve(result.code);
                
                    })
                },
                fail: (err) => {
                    uni.hideLoading();
                }
            })
        })
}

function get_sign(data, code, session_id) {
    var str = '';
    for (var a in data) {
        str += a + '=' + data[a] + '&';
    }
    str += 'code=' + code;
    var sign = md5(str);
    return session_id + '&' + sign;
}

 

以下是一个示例,展示了如何在uniapp封装请求: 1. 创建一个utils文件夹,并在其中创建一个request.js文件。 ```javascript // request.js // 导入uni.request方法 import uniRequest from 'uni-request'; // 创建一个请求实例 const request = uniRequest.create({ baseURL: 'https://api.example.com', // 设置请求的基础URL timeout: 5000, // 设置请求超时时间 }); // 请求拦截器 request.interceptors.request.use((config) => { // 在请求发送之前可以进行一些操作,例如添加请求头等 config.header.Authorization = 'Bearer token123'; // 添加请求头 return config; }, (error) => { return Promise.reject(error); }); // 响应拦截器 request.interceptors.response.use((response) => { // 在接收到响应数据之前可以进行一些操作,例如处理错误码等 if (response.statusCode !== 200) { // 处理错误码 uni.showToast({ title: '请求失败', icon: 'none', }); } return response.data; }, (error) => { return Promise.reject(error); }); // 导出封装后的请求方法 export default request; ``` 2. 在需要发送请求的地方引入封装后的request.js文件,并使用封装请求方法。 ```javascript // 引入封装后的请求方法 import request from '@/utils/request'; // 发送请求 request({ url: '/user/login', method: 'POST', data: { username: 'example', password: '123456', }, }).then((res) => { // 请求成功的处理逻辑 console.log(res); }).catch((error) => { // 请求失败的处理逻辑 console.error(error); }); ``` 这样,你就可以在uniapp封装请求,并使用类似axios的方式进行请求了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值