axios封装统一处理接口,axios请求拦截器和响应拦截器

  axios封装统一处理接口,axios请求拦截器和响应拦截器

  本文主要介绍了Axios代理配置和封装响应拦截处理方法,有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

   Axios代理配置和响应拦截处理代理配置响应内容拦截处理Axios的代理配置分析

  

Axios代理配置及响应拦截处理

  Axios是vue推荐的异步处理方案,所以在多个vue项目中都有使用,所以下面是Axios的代理配置和响应拦截处理。

  

代理配置

  代理主要用于解决跨域问题,但现在解决跨域问题的常规方式是让后端配置响应头,使用cors的跨域前端基本不需要任何处理。

  但是有时候后端比较懒,所以前端需要通过代理请求来完成跨域,实际上相当于在本地打开一台服务器,通过服务器向另一台服务器发出代理请求。

  但是这样会造成一些问题,就是部署到服务器时,前端项目也必须设置代理,或者直接部署与后端项目相同的环境。

  下面是代理请求的配置:

  //config/index.js文件

  模块.导出={

  开发{

  代理表:{

  /:{//替换以/开头的接口

  目标:www.hahaha.com/,//to 3358号,这个地址

  changeOrigin:真的,

  ws:没错,

  路径重写:{

  /: //删除开头的斜杠。

  }

  },

  /ws/* *:{//因为项目中使用了websocket,所以这里也配置了websocket的代理。

  目标: ws://www .哈哈哈. com ,

  ws:没错,

  安全:假,

  日志级别:“调试”,

  }

  }

  .

  }

  Host: 0.0.0.0 ,//这里顺便说一下,将Host改为 0.0.0.0 后,局域网内的计算机可以直接访问项目,默认为localhost。

  .

  }

  

响应内容拦截处理

  因为我们的axios请求响应会返回网络请求信息的状态码,而通常我们在实际使用中并不真正需要这样的内容,为了方便我们可以统一处理,最后只返回真正的实际内容。

  同时,我们希望虽然网络请求成功,但是如果请求的内容失败,也流到catch步骤,即捕捉错误。

  代码如下所示

  const http=axios.create({

  baseURL: api/,

  超时:20000,

  });//创建一个axios对象

  //拦截axios对象响应

  http . interceptors . response . use((response)={

  //在这里输入表示请求成功。网络请求的状态码是200,但是我们要判断请求的内容是否成功。

  if (response.data.ErrorCode!==0) {//因为在我们的项目中设置0意味着请求成功,所以我们会直接拒绝所有非零的。

  return promise . reject(response . data);

  }

  return promise . resolve(response . data);//0的//ErrorCode直接返回response.data直接过滤掉网络的状态码。

  },(错误)={

  //当你进入这里的时候,网络状态码不是200,可能是接口错误或者令牌缺失。

  if(error . constructor . prototype . name== error ){//这里判断返回的对象是否是错误对象,如果是,说明网络请求是错误的。

  消息({ showClose: true,

  消息:“网络链接问题或登录失败!”,

  类型:“错误”})

  return promise(()={ })//这里我们可以做链式异步处理。

  }

  返回error.data//其他请求,说明请求内容有误,直接返回错误内容。

  });

  //返回处理前的内容

  {

  状态:200

  statusText:“好的”,

  数据{

  错误代码:0,

  令牌:“xxxx”,

  名称: xxxx

  }

  }

  //处理后返回内容

  {

  错误代码:0,

  令牌:“xxxx”,

  名称: xxxx

  }

  

Axios的proxy代理配置解析

  代理其实是一种方便前端开发的东西。可以在本地跨域访问其他网站,但是当页面被打包后,代理就会失效。

  我在vue.config.js中设置了代理,代码如下

  代理服务器:{

  //匹配到的路径

  /api: {

  目标:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: