uniapp封装axios
import axios from "axios";
let request = axios.create({
baseURL: // 请求域名
headers: {
"Content-Type": "application/json"
},
timeout:2000
});
request.interceptors.request.use(
config => {
try {
uni.showNavigationBarLoading()
const token = uni.getStorageSync('token');
if(config.needAuth === false){
config.headers.authorization = ""
} else if (token) {
// 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.authorization = token; //Authorization是登录接口返回
}
config.headers.type = "user"; // type:user 是固定的
return config;
} catch (e) {
uni.hideNavigationBarLoading()
uni.showToast({
title: '发生错误,请稍后重试',
position: 'center',
icon: 'none',
duration: 2000
})
}
},
err => {
uni.hideNavigationBarLoading()
return Promise.reject(err);
}
);
// http response 拦截器
request.interceptors.response.use(
response => {
//拦截响应,做统一处理
if(response.data.code != 200){
uni.showToast({
title: response.data.msg,
icon:"none",
duration: 2000
})
if(process.env.NODE_ENV === 'development'){
console.error(response.data.msg)
}
}
uni.hideNavigationBarLoading()
return response;
},
//接口错误状态处理,也就是说无响应时的处理
error => {
uni.hideNavigationBarLoading()
const {
response: { status, errMsg: statusText, data: {message}}
} = error;
const token = uni.getStorageSync('token');
if (status == 401 && token) {// 登录过期处理
uni.clearStorageSync()
uni.showToast({
title: '登录已过期,请重新登录',
icon: 'none',
duration: 2000
})
}else{
uni.showToast({
title: `请求错误,请稍后重试`,
position: 'center',
icon: 'none',
duration: 2000
})
console.error(`请求错误${status||''}:${statusText||message||''}`)
}
return Promise.reject(error); // 返回接口返回的错误信息
}
);
//真机获取
axios.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.baseURL + 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);
}
})
})
}
export default request;
文章来源:https://www.cnblogs.com/kitty-blog/p/13740334.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现