Vue自用axios封装
[本文出自天外归云的博客园]
这是我的Vue项目中的request.js文件,请求报错了看console就会有具体请求信息,方便调试。分享一下。
其中用到了axios和element-ui的组件,axios是用来收发请求的,element-ui中的Message和Loading组件主要是配合axios对请求中和请求失败的情况在页面上进行可视化配合。
代码如下:
import axios from 'axios'
import { Message, Loading } from 'element-ui' let loading
let needLoadingRequestCount = 0 function startLoading () {
loading = Loading.service({
lock: true
})
} export function showLoading () {
if (needLoadingRequestCount === 0) {
startLoading()
}
needLoadingRequestCount++
} export function hideLoading () {
if (needLoadingRequestCount <= 0) return
needLoadingRequestCount--
if (needLoadingRequestCount === 0) {
loading.close()
}
} const instance = axios.create({
baseURL: process.env.BASE_API,
timeout: 150000,
headers: { 'Content-Type': 'application/x-www-form-urlencoded;' }
}) instance.interceptors.request.use(
function (config) {
console.log('[发起请求]' + JSON.stringify(config.data))
showLoading()
return config
},
function (error) {
return Promise.reject(error)
}
) instance.interceptors.response.use(
response => {
const res = response.data
if (res.retcode !== 200) {
// Message({
// message: '[接口返回非200异常]请重新刷新页面',
// type: 'error',
// duration: 5 * 1000
// })
hideLoading()
return Promise.reject(new Error('返回非200')).catch(
console.log('[请求]' + response.config.data + '\n[返回异常]' + res)
)
} else if (JSON.stringify(res.data) === '{}') {
return Promise.reject(new Error('no data'))
.then(result => console.log(result))
.catch(error => console.log(error))
} else {
hideLoading()
return res.data
}
},
error => {
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error).catch(console.log(error))
}
) export default instance
其中process.env在config/dev.env.js中定义:

Vue自用axios封装的更多相关文章
- 【Vue】axios封装,更好的管理api接口和使用
在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...
- vue项目-axios封装、easy-mock使用
vue全家桶概括下来就是 项目构建工具(vue-cli) 路由(vue-router) 状态管理(vuex) http请求工具 vue有自己的http请求工具插件vue-resource,但是vue2 ...
- vue项目 axios封装第二弹
import axios from "axios"; import qs from "qs"; import { Message, MessageBox } f ...
- vue2.0 如何自定义组件(vue组件的封装)
一.前言 之前的博客聊过 vue2.0和react的技术选型:聊过vue的axios封装和vuex使用.今天简单聊聊 vue 组件的封装. vue 的ui框架现在是很多的,但是鉴于移动设备的复杂性,兼 ...
- vue axios封装以及登录token过期跳转问题
Axios配置JWT/封装插件/发送表单数据 首先请务必已仔细阅读 Axios 文档并熟悉 JWT: 中文文档 JWT 中文文档 安装 npm install axios npm install es ...
- 把axios封装为vue插件使用
前言 自从Vue2.0推荐大家使用 axios 开始,axios 被越来越多的人所了解.使用axios发起一个请求对大家来说是比较简单的事情,但是axios没有进行封装复用,项目越来越大,引起的代码冗 ...
- vue中axios 配置请求拦截功能 及请求方式如何封装
main.js 中: import axios from '................/axios' axios.js 中: //axios.js import Vue from 'vue' i ...
- vue中Axios的封装和API接口的管理
前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...
- Vue笔记:封装 axios 为插件使用
前言 自从Vue2.0推荐大家使用 axios 开始,axios 被越来越多的人所了解.使用axios发起一个请求对大家来说是比较简单的事情,但是axios没有进行封装复用,项目越来越大,引起的代码冗 ...
随机推荐
- Python3基础系列-程序模板及代码本质
概要 横看成岭侧成峰,远近高低各不同.但是,程序的设计核心思想却是很简单,简单理解就是有一个输入,对输入的处理环节,最后得出一个输出.这个过程中的设计及其实现却是各不相同.本节的主要内容如下: 程序设 ...
- 常用的Lambda表达式
Java 8 引入Lambda表达式,对于Java开发人员来说是一大福利,简化了代码,提高了开发效率. 本文主要讲解日常开发中使用频率比较高的几类Lambda表达式. 集合 Lambda表达式的引入 ...
- System.ServiceModel.AddressAccessDeniedException
发生了 System.ServiceModel.AddressAccessDeniedException HResult=0x80131501 Message=HTTP 无法注册 URL ht ...
- KTV项目之3个ListView的跳转和加载歌手图片
第一个ListView: 第二个ListView: 第三个ListView: 定义一个KTVUtil类,在里面定义一个静态变量保存歌手图片 //定义一个静态变量保存歌手图片路径 public stat ...
- [ZOJ2069]Greatest Least Common Multiple
[ZOJ2069]Greatest Least Common Multiple 题目大意: 给定一个正整数\(n\),将其分成若干个正整数之和,最大化这些数的LCM.保证答案小于\(10^{25}\) ...
- bzoj3255 一个关于序列的游戏
题意是啥 给你一个数列,可以任意删去一段,记其长度为$s$,得到$val_s$的价值,问你最大价值和为多少.. 其中这一段数要满足成一个上凸且相邻数差为$1$ 显然,删掉一段数后剩下的左右会相邻.. ...
- MySQL(七)
视图 对于复杂的查询,在多次使用后,维护是一件非常麻烦的事情 解决:定义视图 视图本质就是对查询的一个封装 定义视图 create view stuscore as select students.* ...
- Linux下安装配置virtualenv与virtualenvwrapper
一.Linux下安装.配置virtualenv 配置源 #指定清华源下载pip的包 [root@localhost opt]# pip3 install -i https://pypi.tuna.ts ...
- Java基础知识总结--多态
面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据,而外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承是 ...
- Vue(二十三)vuex + axios + 缓存 运用 (以登陆功能为例)
(一)axios 封装 (1)axios拦截器 可以在axios中加入加载的代码... (2)封装请求 后期每个请求接口都可以写在这个里面... (二)vuex user.js import { lo ...