首页 > 其他分享 >基于vue框架axios网络请求封装

基于vue框架axios网络请求封装

时间:2023-03-24 21:11:43浏览次数:52  
标签:axios 封装 请求 request vue error config

原因

axios 是网络请求的第三库,为了防止降低对第三库的依赖性,所以将axios请求封装为函数,方便后期代码的维护

安装

npm install axios

封装

  1. 在目录结构 src 文件夹下创建 network/request.js
	// 引入axios库
	import axios from 'axios'
	// 封装axios实例
	export function request(config){
		// 1. 创建axios实例
		const instance = axios.create({
			// 实例对象的 公共配置项
			baseURL:'http://jsonplaceholder.typicode.com',
			timeout:5000,
			// 等等~需求的配置项
		})
		
		// 2. 配置拦截器
		// 2.1 请求拦截 (config,失败信息)
		instance.interceptors.request.use(config=>{
			// 举例一些对config 操作环境
			// (1) 在发送请求之前,config中有一些配置信息不符合服务器标准
			// (2) 在发送请求之前,需要界面中显示正在请求的图标,例如旋转的 ○
			// (3) 某些网络请求在请求前必须携带特殊信息(登录状态携带token信息)
			return config;
		},error=>{
			// 对失败信息处理
			console.log(error);
			// return new Promise.reject(error);
		})
		// 2.2 响应拦截(响应数据,失败信息)
		instance.interceptors.response.use(result=>{
			// 对返回数据结果进行处理
			 return result.data;
		},error=>{
			// 对失败信息处理
			console.log(error)
		})
		
		// 3. 发送真正的网络请求(基于axios源码,此时instance就是一个Promise对象)
		return instance(config)
	}
  1. 假设在 main.js 调用上述封装的函数
	// 导入已封装好的 axios 模块
	import {request} from './network/request'
	// 调用方法
	request({
		url:'/posts',
		// 默认GET请求 http://jsonplaceholder.typicode.com/post?userId=5
		params:{
			userId:5,
		}
	}).then(res =>{
		// 对请求回来的数据进行操作处理
		console.log(res);
	}).catch(err =>{
		console.log(err);
	})

视频总结 https://www.bilibili.com/video/BV15741177Eh?p=147

标签:axios,封装,请求,request,vue,error,config
From: https://www.cnblogs.com/zici/p/17253350.html

相关文章

  • 初识Vue
    vue是动态构建用户界面的渐进式JavaScript框架:作者是尤雨溪Vue的特点:遵循MVVM模式编码简洁,体积小,运行效率高,适合移动/PC端开发它本身只关注UI,可以引入其它第三方库开发......
  • Axios学习(一)axios中post的body与query传参区别及使用总结
    踩坑描述最近在vue项目开发中遇到了一个axios请求方面的问题,post请求传单个参数的时候,按照post请求方式传参但是接口报错,在swagger上面测试后发现接口是没有问题的。踩坑......
  • vue3报错 Vue received a Component which was made a reactive object.
    报错信息如下:VuereceivedaComponentwhichwasmadeareactiveobject.Thiscanleadtounnecessaryperformanceoverhead,andshouldbeavoidedbymarkingthe......
  • vue/html 日期与时间戳互相转换
    1、将日期转换成时间戳lettime=parseInt(newDate().getTime()/1000);console.log(time)2、接口传过来的UTC日期和13位时间戳格式化constformateDate=(time......
  • Vue2
    一、前端MVVM模式及Axios异步通信1.什么是MVVMMVVM(Model-View-ViewModel)是一种软件架构设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Si......
  • 关于在 vue 3 和 vue router 中使用 transition 过渡动效的 mode 属性导致页面跳转空
    先放结论:不要在路由组件的template块中使用多个根标签,注释也不行。今天碰到一个奇葩的问题,后端告诉我说,进入特定页面后,跳转其他页面均会白屏,刷新后就会加载。一开始我......
  • 使用Cordova打包Vue项目为IOS并使用XCode提交到AppStore
    打包Vue项目1.在Webstorm中打开Vue项目,在下面的Terminal中输入:npmrunbuild2.等待build完成,双击项目,进入菜单选择RevealinFinder,打开项目的真实目录3.找到dist目录,进入4......
  • #yyds干货盘点 React+antDesign封装一个tab组件(类组件)
    前言我是歌谣放弃很容易但是坚持一定很酷喜欢我就一键三连哈微信公众号关注前端小歌谣在我们的工作生活中每次学习一个框架我们就不免要封装组件而具备封装一个完美......
  • vue全家桶进阶之路5:DOM文档对象模型
     一、DOM对象DOM,全称“DocumentObjectModel(文档对象模型)”,它是由W3C组织定义的一个标准。在前端开发时,我们往往需要在页面某个地方添加一个元素或者删除元素......
  • vue全家桶进阶之路4:NPM包
    NPM(NodePackageManager)是Node.js的包管理工具,用来安装各种Node.js的扩展。NPM是JavaScript的包管理工具,也是世界上最大的软件注册表。有超过60万个Jav......