当前位置: 首页 > article >正文

uni-app 统一请求处理 请求拦截器 响应拦截器 请求封装

封装API接口

import {http} from '../utils/request.js'
export function login(code){
	return http({
			url:'/wx/getSession',
			 method: 'GET',
			 data:{
				code
			 }
		})
}

调用接口

import {login,test,phoneMessage,updateAvatar} from '../../api/user.js'
function userLogin(){ 
	login(code.value).then(r=>{
		toekn.value=r.data.token
		uni.setStorageSync('Authorization',toekn.value)
	})
}

export function updateAvatar(uri){
	return uni.uploadFile({
			url:'/wx/uploadAvatar',
			filePath:uri,
			name:'file',
			 headers: {
			    'Content-Type': 'application/json; charset=UTF-8',
			  },
	})
}

请求拦截器

const config={
	
	invoke(options){ //请求前
		//options为封装方法传递的参数

		if(!options.url.startsWith('http')){ //不是与http开头
			options.url=baseUrl+options.url //拼接请求地址
		}
		
		options.timeout=1000*5 //配置超时时间 默认60秒
		
		options.header = { //添加原有的头信息
		      ...options.header,
		    };
		
		const token = uni.getStorageSync('Authorization'); //添加token
		if(token){
			options.header.Authorization=token //实例
		}
		
	}
}

uni.addInterceptor('request',config) //添加请求拦截 config为配置

响应拦截器

const http = (options) => {
  // uni.showLoading({
  //   mask: true,
  //   title: "数据加载中",
  // });
  return new Promise((resolve, reject) => {
    uni.request({
      ...options,
      success(res) {
		  
			resolve(res.data)
      },
      // 响应失败
      fail(err) {
		  
        uni.showToast({
          icon: "none",
          title: "网络错误, 换个网络试试",
        });
        reject(err);
		
      },
      complete() {
        uni.hideLoading();
      },
    });
  });
};

文件上传

uni.addInterceptor("uploadFile", config);//文件上传拦截

http://www.kler.cn/a/450532.html

相关文章:

  • webserver log日志系统的实现
  • 京东零售数据可视化平台产品实践与思考
  • 汽车IVI中控开发入门及进阶(44):杰发科智能座舱芯片
  • webrtc音频模块(三) windows Core Audio API及声音的播放
  • web三、 window对象,延时器,定时器,时间戳,location对象(地址),本地存储-localStorage,数组去重new Set
  • 苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
  • 熊军出席ACDU·中国行南京站,详解SQL管理之道
  • 大数据-258 离线数仓 - Griffin架构 配置安装 Livy 架构设计 解压配置 Hadoop Hive
  • OpenGL 笔记(2)
  • 家用无线路由器的 2.4GHz 和 5GHz
  • flink+kafka实现流数据处理学习
  • VSCode 性能优化指南:提高编码效率,减少资源占用
  • [机器学习]sklearn入门指南(1)
  • 量子模拟器市场的增长潜力与未来趋势
  • Windows内核开发环境配置
  • 51c大模型~合集95
  • 基于微信小程序的乡村政务服务系统springboot+论文源码调试讲解
  • 2024 写写 歇歇
  • 构建一个rust生产应用读书笔记7-确认邮件2
  • 机器人加装电主轴【铣削、钻孔、打磨、去毛刺】更高效
  • 江苏捷科云:可视化平台助力制造企业智能化管理
  • Linux自动挂载与卸载USB设备
  • 数字后端培训项目Floorplan常见问题系列专题续集1
  • *【每日一题 提高题】[蓝桥杯 2022 国 A] 选素数
  • ssm-day05 springmvc
  • 完全二叉树的权值(蓝桥杯2019年试题G)