弹簧引导Vue前+后端分离开发之前端网络请求封装与配置

  

前端网络访问,主流方案就是Ajax, Vue也不例外,在Vue2.0之前,网络访问较多的采用vue-resources, Vue2.0之后,官方不再建议使用vue-resources,这个项目本身也停止维护,目前建议使用的方案是axios。今天松哥就带大家来看看axios的使用。

  

  

axios使用步骤很简单,首先在前端项目中,引入axios:

  

<代码> npm安装axios - s

  

装好之后,按理说可以直接使用了,但是,一般在生产环境中,我们都需要对网络请求进行封装。

  

因为网络请求可能会出错,这些错误有的是代码错误导致的,也有的是业务错误,不管是哪一种错误,都需要开发者去处理,而我们不可能在每一次发送请求时都去枚举各种错误情况。

  

因此我们需要对前端请求进行封装,封装完成后,将前端错误统一处理,这样,开发者只需要在每一次发送请求的地方处理请求成功的情况即可。

  

  

在axios中,我们可以使用axios自带的拦截器来实现对错误的统一处理。

  

在axios中,有请求拦截器,也有响应拦截器。

  

请求拦截器中可以统一添加公共的请求参数,例如单点登录中前端统一添加牌参数。

  

响应拦截器则可以实现对错误的统一处理。

  

另外一个需要注意的地方则是错误的展示需要使用一种通用的方式,而不可以和页面绑定(例如,登录失败,在用户名/密码输入框后面展示错误信息,不支持这种错误显示方式),这里推荐使用ElementUI中的按摩来展示错误信息,这是一个页面无关的组件。

  

封装后的axios如下:

        从“axios”进口axios   从“element-ui”进口{信息}   axios.interceptors.request.use (config=比;{   返回配置;   },呃=比;{   消息。错误({消息:“请求超时!”});   })   axios.interceptors.response.use (data=https://www.yisu.com/zixun/> {   如果(数据)。& &数据状态。==200 & & data.data地位。状态==500){   消息。错误({信息:data.data.msg});   返回;   }   如果(data.data.msg) {   消息。成功({信息:data.data.msg});   }   返回data.data;   },呃=> {   如果(err.response。状态==504 | | err.response。状态==404){   Message.error({消息:“服务器被吃了⊙﹏⊙∥"});   如果(err.response}其他。状态==403){   消息。错误({消息:“权限不足,请联系管理员!”});   如果(err.response}其他。状态==401){   消息。错误({信息:err.response.data.msg});   其他}{   如果(err.response.data.msg) {   消息。错误({信息:err.response.data.msg});   其他}{   消息。错误({消息:“未知错误!”});   }   }   })      

代码解释:

  

1。首先导入axios和按摩组件
  2.接下来定义一个请求拦截器
  3.最后定义一个响应拦截器,这个拦截器有两个参数,第一个参数数据表示服务端处理成功的响应,第二个犯错表示服务端处理失败的响应。对照着jQuery中的Ajax,第一个相当于成功回调,第二个相当于错误回调。
  4.响应的数据表示服务端返回的数据,数据格式是{数据:{味精”状态:200年,obj:{}},状态:200}其中,数据中的对象就是服务端返回的具体的JSON,外面的状态表示HTTP响应码,里边的地位是自定义的RespBean中返回的数据
  5.首先判断HTTP响应码为200,并且服务端返回的状态为500,表示业务逻辑错误,此时直接通过消息将错误信息展示出来,然后返回即可。
  6.如果服务端返回的字段中包含味精,则将味精显示出来,这个味精一般是成功的提示。
  7.最后返回数据。数据,即将服务端返回的数据,这个数据最终会来到请求调用的地方。
  8.当HTTP响应码大于等于400时,进入犯错中。

  

  

请求封装完成后,还需要对方法进行封装,方便调用:

        让基地=";   出口const postRequest=(url, params)=比;{   返回axios ({   方法:“文章”,   url:“${基地}$ {url}”,   数据:参数,   标题:{   “内容类型”:“application/json”   }   });   }   出口const putRequest=(url, params)=比;{   返回axios ({   方法:‘把’,   url:“${基地}$ {url}”,   数据:参数,   标题:{   “内容类型”:“application/json”   }   });   }   出口const deleteRequest=(url)=比;{   返回axios ({   方法:“删除”,   url:“${基地}$ {url}”   });   }   出口const getRequest=(url)=比;{   返回axios ({   方法:“得到”,   url:“${基地}$ {url}”   });   }

弹簧引导Vue前+后端分离开发之前端网络请求封装与配置