uniapp请求封装(个人总结)

自己根据公司同事留下的代码改的,uniapp请求封装

import {
  BASE_URL
} from './config.js'

//  公共的请求方法
function request ({
  url,
  method,
  // 不填为不需要token,为true为需要token
  isAuth,
  data,
  // 默认显示Loading
  isShowLoading = true
}) {
  return new Promise((resolve, reject) => {
    // 接口不需要传token,默认值为{}
    let header = {}

    if (isAuth) {
      // 接口需要传token
      let token = uni.getStorageSync('token')
      // 接口需要token,但是没有token,跳转登录页
      if (!token) {
        uni.showToast({
          icon: 'none',
          title: '请先登录!'
        })
        uni.navigateTo({
          url: '/pages/login/login'
        })
        return
      }
      header.token = token
    }
    // 请求前开启loading
    if (isShowLoading) {
      uni.showLoading({
        title: '加载中',
        mask: true
      })
    }

    uni.request({
      url: BASE_URL + url,
      method,
      header,
      data: data,
      complete: res => {
        let {
          statusCode
        } = res
        // 请求后关闭loading
        if (isShowLoading) {
          uni.hideLoading()
        }
        if (statusCode === 401) {
          uni.clearStorageSync()
          uni.showToast({
            icon: 'none',
            title: '登录凭证过期,请重新登录'
          })
          // 跳转登录页面
          uni.navigateTo({
            url: '/pages/login/login'
          })
        } else if (statusCode === 200) {
          // 请求成功后
          let {
            code
          } = res.data;
          if (code === 200) {
            resolve(res.data)
          } else {
            // 如果有其他规则,可以直接加这
            resolve(res.data)
          }
        } else {
          uni.showToast({
            icon: 'none',
            title: '网络请求失败'
          })
          reject(res)
        }
      }
    })
  })
}

export default request

你可能感兴趣的:(前端)