博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue3.0使用axios-二次封装
阅读量:3556 次
发布时间:2019-05-20

本文共 2521 字,大约阅读时间需要 8 分钟。

安装

npm install --save axios
在 main.js中引入
inport axios "axios"
在http文件夹中新建api.js文件
引入axios
inport axios "axios"
post、get请求进行封装

get 请求:

export function get(url,api,params){ 	return	axios({		method:'get',		url:api,		baseURL:url,		params:params	}).then(response => response.data).catch((err)=>{		console.log(err)	}) }

postJson请求:

export function postJson(url.api,data){	return axios({		method:'post',		url:api,		baseURL:url,		headers:{'Content-Type':'aplication/json'},		data:data	}).then(response => response.data).catch((err) => {		console.log(err)	})}

postForm请求:

export  function posrForm(url,api ,data){	return axios({		method:'post',		url:api,		baseURL:url,		headers:{'Content-Type':'application/x-www-form-urlencoded'},		data:data,		transformRequest:[function (data){			let ret = '',			for(let it in data){				ret += encodeURIComponent(it) + "=" 6 encodeURIComponent(data[it]) + '&'			}				return ret		}]	}).then(response => response.data).catch((err) => {		console.log(err)	})}

封装完成了之后对他们进行输出(install方法将被作为Vue的参数调用)

export default{	install(Vue){		Vue.prototype.getAxios = (url,api,params) => get(url,api,params),		Vue.prototype.pJson = (url,api,params) => postJson(url,api,params),		Vue.prototype.pForm = (url,api,params) => postForm(url,api,params)	}}

在main.js中引入并且注册

import axiosApi from "@/http/api.js"
Vue.use(axiosApi)
axios有两个拦截器请求拦截器,响应拦截器可以进行处理
响应拦截器:

axios.intercepors.response.use(response => {	if(response.data.code === 401){		router.replace({			path:'/login',			query:{redirect: router.currentRoute.fullPath}		})	}	return response}, err => {		if(err && err.response){			switch(err.response.status){				case 400:					console.log("错误请求")				break				case 401:					this.$store.commit('delToken')					console.log("未授权,请重新登录")				break				case 403:					console.log("拒绝访问")				break				case 404:					console.log("请求错误,未找到该资源")				break				case 404:					console.log("请求方法为允许")				break				case 408:					console.log("请求超时")				break				case 500:					console.log("服务器端出错")				break				case 501:					console.log("网络未实现")				break				case 502:					console.log("网络错误")				break				case 503:					console.log("服务不可用")				break				case 504:					console.log("网络超时")				break				case 505:					console.log("http版本不支持该请求")				break				default:					console.log(`连接错误${err.response.status}`)			}		}else{			console.log('连接到服务器失败')		}})

请求拦截器:

axios.interceptors.request.use(config => {	if(store.state.info.token){		config.headers.common['token'] = store.state.info.token	}	return config}, err => {	return Promise.reject(err)})

转载地址:http://jqfrj.baihongyu.com/

你可能感兴趣的文章
[LeetCode javaScript] 824. 山羊拉丁文
查看>>
[LeetCode javaScript] 463. 岛屿的周长
查看>>
[LeetCode javaScript] 107. 二叉树的层次遍历 II
查看>>
[LeetCode javaScript] 637. 二叉树的层平均值
查看>>
[LeetCode javaScript] 1. 两数之和
查看>>
[LeetCode javaScript] 14. 最长公共前缀
查看>>
[LeetCode javaScript] 26. 删除排序数组中的重复项
查看>>
[LeetCode javaScript] 8. 字符串转换整数 (atoi)
查看>>
[LeetCode javaScript] 28. 实现strStr()
查看>>
cv2.error: OpenCV(3.4.2) c:\projects\opencv-python\opencv\modules\imgproc\src\color.hpp:25
查看>>
前端网页学习7(css背景属性)
查看>>
前端网页学习8(css三大特性:层叠性,继承性,优先级)
查看>>
前端网页学习9(css盒子)
查看>>
python学习8(列表)
查看>>
JavaScript学习(new1)
查看>>
http GET 和 POST 请求的优缺点、区别以及误区
查看>>
JVM的4种垃圾回收算法、垃圾回收机制
查看>>
什么是分布式事务
查看>>
常用的分布式事务解决方案
查看>>
设计模式:单例模式 (关于饿汉式和懒汉式)
查看>>