axios 真机调试报错:TypeError: adapter is not a function,h5正常,解决方法?axios接口封装,uniapp接口封装,vue接口封装,请求拦截,请求返回拦截

1 篇文章 0 订阅
1 篇文章 0 订阅

时空书城-出品
import axios from ‘axios’
import common from “@/common/common.js”
import store from ‘@/store/store.js’

let BASE_URL = ‘’;
let BASE_WS_URL = ‘’;
const BASE_URL_ADMIN_PATH = ‘/api’;
let ceshi = ‘’

//请求域名
let bendi = ‘******.com’ //本地开发
let production = ‘******.com’ //测试服
// WebSocket地址、
let bendiWs = ‘******.com’ //本地开发
let productionWs = ‘******.com’ //测试服

if (process.env.NODE_ENV === ‘development’) {
BASE_URL = bendi //开发
BASE_WS_URL = bendiWs
} else {
BASE_URL = production // 线上
BASE_WS_URL = productionWs
}
// 状态码
const BASE_TIMEOUT = 5000; // 请求超时 默认5000
const AUTH_TOKEN_FLAG = ‘admin_auth_token’; // token
const TOKEN_LOGIN_CODE = 995; // 请先登录
const TOKEN_INVALID_CODE = 996; // 无效令牌!
const TOKEN_RESERVED_ERROR_CODE = 997; // 保留错误码!
const TOKEN_Undefined_CODE = 998; // 请求对象未定义!
const TOKEN_System_exception_CODE = 999; // 系统异常!

/** 所有接口变量定义 */
const apiList = {
getToken: ‘/Auth/getToken’, //获取游客token

}

/** 请求网络变量定义 */
const instance = axios.create({
baseURL: BASE_URL + BASE_URL_ADMIN_PATH,
timeout: BASE_TIMEOUT,
});

// 请求前拦截
instance.interceptors.request.use(config => {
let token = uni.getStorageSync(‘token’);
config.headers.common[‘token’] = token
return config;
}, error => {
return Promise.reject(error);
});
时空书城-出品
// 返回拦截
instance.interceptors.response.use((response) => {
switch (response.data.code) {
case TOKEN_LOGIN_CODE:
// 登录状态改为false
uni.setStorage({
key: ‘isLogin’,
data: false,
});
uni.showToast({
title: ‘请先登录’,
icon: ‘none’
})
setTimeout(() => {
uni.navigateTo({
url: ‘/pages/login/login’
});
}, 2000)
break;
case TOKEN_INVALID_CODE:
// 无效令牌
// 清除token
uni.setStorage({
key: ‘token’,
data: ‘’,
success: function() {
// 获取token
https(apiList.getToken + ${common.getData}).then(response => {
if (response.status == 200) {
uni.setStorage({
key: ‘token’,
data: response.data.data.token,
success() {
//从新加载方法1
/* #ifdef H5 /
location.reload()
/
#endif */
}
});
}
});
}
});
break;
case common.code:
response.data.msg = ‘成功’
break;
}
return response;

}, function(error) {
return Promise.reject(error);
});

时空书城-出品
//app真机获取
instance.defaults.adapter = function (config) {
return new Promise((resolve, reject) => {
var settle = require(‘axios/lib/core/settle’);
var buildURL = require(‘axios/lib/helpers/buildURL’);
uni.request({
method: config.method.toUpperCase(),
url: buildURL(config.url, config.params, config.paramsSerializer),
header: config.headers,
data: config.data,
dataType: config.dataType,
responseType: config.responseType,
sslVerify: config.sslVerify,
complete:function complete(response){
response = {
data: response.data,
status: response.statusCode,
errMsg: response.errMsg,
header: response.header,
config: config
};

        settle(resolve, reject, response);  
        }  
    })  
})  

}
/**

  • 网络请求
  • @param {String} url 请求地址
  • @param {Array} data 请求数据
    */
    function https(url, data = null) {
    return new Promise((resolve, reject) => {
    uni.showLoading({
    title: ‘加载中’
    });
    instance.request({ //请求 后台路由
    //baseURL: BASE_URL + BASE_URL_ADMIN_PATH, //url 为 封装好的
    method: (data === null) ? ‘get’ : ‘post’, //如果data=null 就是get请求 如果 有带参数就是post请求
    url: BASE_URL + BASE_URL_ADMIN_PATH+url,
    data: data
    }).then((response) => {
    uni.hideLoading();
    resolve(response);
    }).catch((error) => {
    uni.hideLoading();
    reject(error)
    })
    });
    }
    时空书城-出品
    export default {
    apiList,
    https,
    BASE_URL,
    BASE_URL_ADMIN_PATH,
    BASE_WS_URL,
    }
    时空书城-出品
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值