vue中axios二次封装的示例分析

  介绍

小编给大家分享一下vue中axios二次封装的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

为什么要使用vue

vue是一款友好的,多用途且高性能的JavaScript框架,使用vue可以创建可维护性和可测试性更强的代码库,vue允许可以将一个网页分割成可复用的组件,每个组件都包含属于自己的HTML, CSS, JavaScript,以用来渲染网页中相应的地方,所以越来越多的前端开发者使用vue。

我们做项目时,虽然axios也可以直接拿来用,但是对接口比较零散,不太好进行维护,也会产生大量的重复代码,所以我在这对axios进行了统一接口处理

第一步,先在src中的公共文件夹中如跑龙套里新建请求。js文件

 vue中axios二次封装的示例分析

import  axios 得到& # 39;axios& # 39;   import  router 得到& # 39;@/路由器/路由器# 39;   import {,通知、MessageBox },得到& # 39;element-ui& # 39;   import  store 得到& # 39;. ./商店# 39;   {import  getToken },得到& # 39;@/跑龙套/身份验证# 39;   import  Config 得到& # 39;@/配置# 39;   ,   import  {baseUrl},得到& # 39;@/跑龙套/env # 39;   ,//,创建axios实例   const  service =, axios.create ({   ,baseURL: baseURL,,//, api 的base_url   ,//baseURL: process.env.BASE_API,,//, api 的base_url   ,超时:Config.timeout //,请求超时时间   })   ,//,请求拦截器   service.interceptors.request.use (=,config 祝辞,{   if 才能;(getToken ()), {   ,,config.headers[& # 39;授权# 39;],=,& # 39;Bearer  & # 39;, +, getToken(),//,让每个请求携带自定义token 请根据实际情况自行修改   ,,}   config.headers才能[& # 39;内容类型# 39;],=,& # 39;application/json # 39;   ,return 配置   },=,error 祝辞,{//才能,Do  something  with  request 错误   console.log才能(错误),//for 调试   Promise.reject才能(错误)   ,}   )   ,//,response 拦截器   service.interceptors.response.use (=,response 祝辞,{   const 才能;code =response.status   console.log才能(响应)   if 才能;(code  & lt;, 200, | |, code 祝辞,300),{   ,,Notification.error ({   ,,,标题:response.message   ,,})   ,,return  Promise.reject(& # 39;错误# 39;)   ,,},{else    ,,return  response.data   ,,}   },=,error 祝辞,{   let 才能;code =0   try {才能   ,,code =error.response.data.status   ,,},catch  (e), {   ,,if  (error.toString () .indexOf(& # 39;错误:,超时# 39;),!==,1),{   ,,,Notification.error ({   ,,,,标题:,& # 39;网络请求超时& # 39;,   ,,,,时间:2500年   ,,,})   ,,,return  Promise.reject(错误)   ,,}   ,,if  (error.toString () .indexOf(& # 39;错误:,Network 错误# 39;),!==,1),{   ,,,Notification.error ({   ,,,,标题:,& # 39;网络请求错误& # 39;,   ,,,,时间:2500年   ,,,})   ,,,return  Promise.reject(错误)   ,,}   ,,}   if 才能;(code ===, 401), {   ,,MessageBox.confirm (   ,,,& # 39;登录状态已过期,您可以继续留在该页面,或者重新登录& # 39;,   ,,,& # 39;系统提示& # 39;,   ,,,{   ,,,,confirmButtonText:, & # 39;重新登录& # 39;,   ,,,,cancelButtonText:, & # 39;取消& # 39;,   ,,,,类型:,& # 39;预警# 39;   ,,,}   ,,)((),=祝辞,{   ,,,store.dispatch(& # 39;注销# 39;),然后((),=祝辞,{   ,,,,location.reload(),//,为了重新实例化vue-router对象,避免bug   ,,,})   ,,})   ,,},else  if  (code ===, 403), {   ,,router.push({,路径:& # 39;/401 & # 39;,})   ,,},{else    ,,const  errorMsg =error.response.data.message   ,,if  (errorMsg  !==,未定义),{   ,,,Notification.error ({   ,,,,标题:,errorMsg,   ,,,,时间:2500年   ,,,})   ,,}   ,,}   return 才能;Promise.reject(错误)   ,}   )   null

vue中axios二次封装的示例分析