uni-app request封装请求

对uni.request的一些共同参数进行简单的封装,减少重复性数据请求代码。方便全局调用。

先在目录下创建 utils 目录,紧接着在 utils 目录下面创建一个 api.js 文件

 接下来我们就在刚创建的文件中做一个简单地uni.request 的请求封装。

废话不多说,直接上代码!

api.js文件

export const baseUrl = 'https://api.bingxizg.com/api'

function mylogin() {
    return new Promise((resolve, reject) => {
        wx.login({
            success: (res) => {
                if (res.code) {
                    wx.request({
                        url: baseUrl + '/wxLogin',
                        method: 'POST',
                        data: {
                            code: res.code
                        },
                        success: (res) => {
                            console.log(res);
                            if (res.data.code == 200) {
                                uni.setStorageSync('token', res.data.data.token)
                                resolve(true)
                            }
                        }
                    })
                } else {
                    console.log('登录失败!' + res.errMsg)
                }
            }
        })
    })

}
// 获取请求头 判断token是否存在
async function getHeaders() {
    if (!uni.getStorageSync('token')) {
      await  mylogin()
    }
    let header = {
        Accept: 'application/json',
        "Content-Type": "application/json", //根据自己的数据类型
        Authorization: 'Bearer ' + uni.getStorageSync('token')
    }
    return header
}

//访客登录

export const requestApi = function(data) {
    data.method = data.method ? data.method.toUpperCase() : 'GET'
    if (!['GET', 'POST'].includes(data.method)) {
        uni.showToast({
            title: `暂不支持的请求方式: ${data.method}`,
            icon: 'none'
        });
        return
    }
    return new Promise(async (resolve, reject) => {
        uni.request({
            url: baseUrl + data.url,
            method: data.method,
            data: data.params,
            header: await getHeaders(),
            success: (res) => {
                resolve(res)
            },
            error: (err) => {
                reject(err)
            }
        })
    }).then(res => {
        return res
    }).catch(
        (response) => {
            uni.showToast({
                title: `请求错误: ${response.data.message}`,
                icon: 'none'
            });
        }
    )
}

在main.js文件中引入

import { requestApi } from '/until/api.js'
App.config.globalProperties.$request = requestApi

index文件中使用

this.$request({
        url: '/userInfo',
        params:{},
        method:'GET'
    }).then((res) => {
        console.log(res)
  })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值