Axios拦截器(Interceptors)

本文介绍了如何使用Axios拦截器来处理请求和响应。请求拦截器用于在发送请求前添加如token的额外信息,而响应拦截器则在接收到服务器响应后进行数据处理,如错误提示和数据提取。通过设置拦截器,可以统一管理和优化HTTP请求流程。
摘要由CSDN通过智能技术生成

Axios拦截器(Interceptors)

axios拦截器主要分为两种:请求拦截器和响应拦截器。

请求拦截器

请求拦截器作用是在发出请求时,拦截下用户的请求,执行完一系列处理再发送出去(像添加cookie、token,请求头等)

配置请求拦截器

  • 首先创建一个axios实例对象
import axios from 'axios'
import { ELMessage } from 'element-plus'
const myRequest = axios.create({
	baseURL: process.env.BASE_API, // 这里可以写自己访问的地址,例如127.0.0.1
	timeout: 3000, // 请求超时时间
	headers: {
		"Content-Type": "application/json;charset=utf-8"
	}
})

这样一个axios实例就创建好了,我们就可以用这个实例来访问我们需要访问的地址

  • 接下来就是配置请求拦截器(interceptor.request)
myRequest.interceptors.request.use(
	req=>{...}, // 对发起的请求进行处理,方法写在{}中,req是请求参数
	err=>{...}, // 出现请求错误时进行的处理
}

下面写一个设置token的实例:

myRequest.interceptors.request.use(
    config => {
        const token = localStorage.getItem('token') // 获取存取的token
        if(token){ // 不为空的话就设置进headers
            config.headers['token'] = token
        }
        return config
    },
    err => {
        return Promise.reject(error)
    }
)

配置响应拦截器

当服务器产生响应时,对响应数据进行拦截,并对拦截的数据进行处理,处理完数据再返回,比如对于成功的返回,我们只需要返回数据,那么我们可以直接处理数据,把不需要的数据去除再返回。如果出错的话,就返回错误信息,并用message显示错误。

  • 接下来就是配置响应拦截器(interceptor.response)
myRequest.interceptors.response.use(
	res=>{...}, // 对响应进行处理,方法写在{}中,res是返回数据
	err=>{...}, // 出现请求错误时进行的处理
)

假设服务器给我们的响应为:

{
	"errCode" : 0,
	"errDesc" : "Success",
	"data": "xxxxxx"
}

这时候我们可以这样写响应拦截器:

myRequest.interceptors.response.use(
    res => {
        if(res.errCode ==  0){
        	return Promise.resolve(res.data)
       	}
        else {
        	ElMessage({
	            message: "Error",
	            type: 'error',
	            duration: 5 * 1000
	        })
        	return Promise.reject(new Error("Error Message"))
		}
    },
    err => {
        ElMessage({
            message: err.data.message,
            type: 'error',
            duration: 5 * 1000
        })
    }
)

通过上面的处理之后,我们axios.xxx().then((res)=>{…})的res就为响应数据的data,其中errCode和errDesc就被处理掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值