axios拦截路径

2025-03-10 0 33

Image

《axios拦截路径》

一、解决方案

在使用axios进行网络请求时,我们可以通过配置来拦截请求和响应路径。这样可以在请求发出前对请求做一些处理,如添加公共参数、修改请求头等;也可以在响应到达后对响应数据进行预处理,像统一处理错误信息等。

二、基于axios实例的拦截路径设置

1. 创建axios实例并添加

javascript
import axios from 'axios';</p>

<p>const instance = axios.create({
    baseURL: 'https://api.example.com', // 基础url
    timeout: 5000 // 请求超时时间
});</p>

<p>// 添加请求
instance.interceptors.request.use(
    config => {
        // 在发送请求之前做些什么
        // 例如添加token到请求头
        const token = localStorage.getItem('token');
        if (token) {
            config.headers['Authorization'] = <code>Bearer ${token};
        }
        return config;
    },
    error => {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
);

// 添加响应 instance.interceptors.response.use( response => { // 对响应数据做点什么 // 如果接口返回的是自定义的成功状态码(假设为0),则正常返回数据 if(response.data.code === 0){ return response.data.data; }else{ // 处理其他情况,比如提示错误信息等 alert(response.data.message || '请求失败'); return Promise.reject(response.data); } }, error => { // 对响应错误做点什么 if(error.response){ // 根据不同的HTTP状态码做不同处理 switch(error.response.status){ case 401: // 登录过期等情况 alert('登录过期,请重新登录'); break; case 403: alert('没有权限'); break; case 404: alert('请求地址不存在'); break; default: alert('未知错误'); } } return Promise.reject(error); } );

三、全局配置拦截路径思路

如果不想创建新的axios实例,而是直接对全局的axios对象进行配置也是可以的。代码如下:

javascript
import axios from 'axios';</p>

<p>// 请求
axios.interceptors.request.use(
    config => {
        const token = sessionStorage.getItem('userToken');
        if(token){
            config.headers.Authorization = <code>Bearer ${token};
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应 axios.interceptors.response.use( response => response, error => { if(error.response && error.response.status === 401){ console.log('全局拦截:登录过期'); } return Promise.reject(error); } );

这两种方式都可以实现axios拦截路径的功能,可以根据项目的需求选择合适的方式。通过拦截路径,能够使我们的网络请求更加规范、安全,并且可以简化很多重复性的操作。

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载