axios拦截器 config_axios拦截器

本文详细介绍了如何在Vue项目中使用axios拦截器进行请求和响应的拦截处理,包括设置请求头、处理未登录状态等。同时,文章还展示了如何封装axios的GET、POST、PATCH、PUT及导出Excel请求。
摘要由CSDN通过智能技术生成

这次给大家带来axios拦截器,使用axios拦截器的注意事项有哪些,下面就是实战案例,一起来看一下。

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端.这篇文章主要介绍了vue/axios请求拦截的相关知识,需要的朋友可以参考下

axios 简介

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:

从浏览器中创建 XMLHttpRequest

从 node.js 发出 http 请求

支持 Promise API

拦截请求和响应

转换请求和响应数据

取消请求

自动转换JSON数据

客户端支持防止 CSRF/XSRF

下面代码给大家介绍vue axios 请求拦截,具体代码如下所示:import axios from 'axios';//引入axios依赖

import { Message } from 'element-ui';

import Cookies from 'js-cookie'; //引入cookie操作依赖

import router from '@/router/index'//引入路由对象

axios.defaults.timeout = 5000;

axios.defaults.baseURL ='';

//http request 封装请求头拦截器

axios.interceptors.request.use(

config => {

var token = ''

if(typeof Cookies.get('user') === 'undefined'){

//此时为空

}else {

token = JSON.parse(Cookies.get('user')).token

}//注意使用的时候需要引入cookie方法,推荐js-cookie

config.data = JSON.stringify(config.data);

config.headers = {

'Content-Type':'application/json'

}

if(token != ''){

config.headers.token = token;

}

return config;

},

error => {

return Promise.reject(err);

}

);

//http response 封装后台返回拦截器

axios.interceptors.response.use(

response => {

//当返回信息为未登录或者登录失效的时候重定向为登录页面

if(response.data.code == 'W_100004' || response.data.message == '用户未登录或登录超时,请登录!'){

router.push({

path:"/",

querry:{redirect:router.currentRoute.fullPath}//从哪个页面跳转

})

}

return response;

},

error => {

return Promise.reject(error)

}

)

/**

* 封装get方法

* @param url

* @param data

* @returns {Promise}

*/

export function fetch(url,params={}){

return new Promise((resolve,reject) => {

axios.get(url,{

params:params

})

.then(response => {

resolve(response.data);

})

.catch(err => {

reject(err)

})

})

}

/**

* 封装post请求

* @param url

* @param data

* @returns {Promise}

*/

export function post(url,data = {}){

return new Promise((resolve,reject) => {

axios.post(url,data)

.then(response => {

resolve(response.data);

},err => {

reject(err)

})

})

}

/**

* 封装导出Excal文件请求

* @param url

* @param data

* @returns {Promise}

*/

export function exportExcel(url,data = {}){

return new Promise((resolve,reject) => {

axios({

method: 'post',

url: url, // 请求地址

data: data, // 参数

responseType: 'blob' // 表明返回服务器返回的数据类型

})

.then(response => {

resolve(response.data);

let blob = new Blob([response.data], {type: "application/vnd.ms-excel"});

let fileName = "订单列表_"+Date.parse(new Date())+".xls" ;

if (window.navigator.msSaveOrOpenBlob) {

navigator.msSaveBlob(blob, fileName);

} else {

var link = document.createElement('a');

link.href = window.URL.createObjectURL(blob);

link.download = fileName;

link.click();

window.URL.revokeObjectURL(link.href);

}

},err => {

reject(err)

})

})

}

/**

* 封装patch请求

* @param url

* @param data

* @returns {Promise}

*/

export function patch(url,data = {}){

return new Promise((resolve,reject) => {

axios.patch(url,data)

.then(response => {

resolve(response.data);

},err => {

reject(err)

})

})

}

/**

* 封装put请求

* @param url

* @param data

* @returns {Promise}

*/

export function put(url,data = {}){

return new Promise((resolve,reject) => {

axios.put(url,data)

.then(response => {

resolve(response.data);

},err => {

reject(err)

})

})

}

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Axios 拦截器是一种在请求发送和响应返回之前,对请求和响应进行处理的机制。Axios 拦截器可以用于添加请求头、验证请求数据、对响应数据进行处理等场景。 Axios拦截器是基于 Promise 实现的,每个拦截器都是一个 Promise,其 resolve 函数接收一个 config 对象或 response 对象作为参数。Axios 支持两种类型的拦截器:请求拦截器和响应拦截器。 请求拦截器会在请求发送之前执行,响应拦截器会在响应返回之后执行。请求拦截器可以用于添加请求头、验证请求数据等操作,响应拦截器可以用于对响应数据进行处理。 Axios拦截器原理可以简单概括为: 1. 创建一个 Axios 实例,并设置默认配置。 2. 将请求和响应拦截器添加到实例。 3. 当发送请求时,按照顺序执行请求拦截器的代码。 4. 如果请求拦截器发生了错误,Promise.reject() 方法会直接返回错误信息。 5. 如果请求拦截器没有发生错误,Axios 会将最终的请求参数发送给服务器。 6. 当服务器返回响应时,Axios 会按照顺序执行响应拦截器的代码。 7. 如果响应拦截器发生了错误,Promise.reject() 方法会返回错误信息。 8. 如果响应拦截器没有发生错误,Axios 会将最终的响应结果返回给调用者。 总之,Axios 拦截器的原理就是在请求和响应之间插入一些处理代码,以实现对请求和响应的自定义处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值