介绍
小编给大家分享一下vue中axios二次封装的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
为什么要使用vue
vue是一款友好的,多用途且高性能的JavaScript框架,使用vue可以创建可维护性和可测试性更强的代码库,vue允许可以将一个网页分割成可复用的组件,每个组件都包含属于自己的HTML, CSS, JavaScript,以用来渲染网页中相应的地方,所以越来越多的前端开发者使用vue。
我们做项目时,虽然axios也可以直接拿来用,但是对接口比较零散,不太好进行维护,也会产生大量的重复代码,所以我在这对axios进行了统一接口处理
第一步,先在src中的公共文件夹中如跑龙套里新建请求。js文件
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(错误) ,} ) nullvue中axios二次封装的示例分析