封装一:

'use strict'

import axios from 'axios'
import qs from 'qs'
import NProgress from 'nprogress'
import vm from '../main' axios.interceptors.request.use(config => { //利用拦截器做预处理
// 这里可以加一些动作, 比如来个进度条开始动作,
NProgress.start()
return config
}, error => {
return Promise.reject(error)
}) axios.interceptors.response.use(response => response, error => Promise.resolve(error.response)) // 这里我们把错误信息扶正, 后面就不需要写 catch 了 //处理来自网络或者服务器的错误
function checkStatus(response) {
NProgress.done() // if (response.status == 666) {
// localStorage.clear();
// this.$router.push('/')
// }
// 如果 http 状态码正常, 则直接返回数据
// 200请求成功 304浏览器缓存
if (response.status === 200 || response.status === 304 || response.status == 400) {
return response
}
if (response.status == 401) {
console.log("token错误");
vm.$router.push("/");
return response
}
// 异常状态下, 把错误信息返回去
// 因为前面我们把错误扶正了, 不然像 404, 500 这样的错误是走不到这里的
return {
data: {
code: -404,
message: response.statusText,
data: response.statusText,
}
}
}
//处理来自程序端的错误,
function checkCode(res) { // 如果状态 code 异常(这里已经包括网络错误, 服务器错误, 后端抛出的错误), 可以弹出一个错误提示, 告诉用户
if ((res.data.code || res.data.Code) && res.data.code !== 1000) {
//登录超时--重新登录
if (res.data.code === 1100) {
//alert("会话过期...,请重新登录...")
vm.$router.push('/')
} else if (res.data.Code === 1500) {
vm.$message.error({
message: res.data.Error,
type: "error"
});
} else {
vm.$message.error({ message: '服务器开小差了,请稍后再试', type: "error" });
}
}
return res;
} export default {
post(url, data) {
const token = JSON.parse(localStorage.getItem("token")) return axios({
method: 'post', //请求协议
url, //请求地址
data: qs.stringify(data), //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
postList(url, data) {
const token = JSON.parse(localStorage.getItem("token"));
return axios({
method: 'post', //请求协议
url, //请求地址
data: data, //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
get(url, params) {
const token = JSON.parse(localStorage.getItem("token"));
return axios({
method: 'get', //请求协议
url, //请求地址
params, //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
delete(url, params) {
const token = JSON.parse(localStorage.getItem("token"));
return axios({
method: 'delete', //请求协议
url, //请求地址
params, //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
put(url, data) {
const token = JSON.parse(localStorage.getItem("token"))
return axios({
method: 'put', //请求协议
url, //请求地址
data: qs.stringify(data), //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
putList(url, data) {
const token = JSON.parse(localStorage.getItem("token"))
return axios({
method: 'put', //请求协议
url, //请求地址
data: data, //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
}

vue axios 封装(一)的更多相关文章

  1. vue axios封装以及登录token过期跳转问题

    Axios配置JWT/封装插件/发送表单数据 首先请务必已仔细阅读 Axios 文档并熟悉 JWT: 中文文档 JWT 中文文档 安装 npm install axios npm install es ...

  2. vue axios 封装(二)

    封装二: http.js import axios from 'axios' import storeHelper from './localstorageHelper' // 全局设置 const ...

  3. vue Axios 封装与配置项

    import axios from "axios"; import qs from "qs"; import { Message } from "el ...

  4. vue(axios)封装,content-type由application/json转换为application/x-www-form-urlencoded

    现在主流的http请求头的content-type有三种(不讨论xml): application/x-www-form-urlencoded  最常见的提交数据方式,与原生form表单数据一致,在c ...

  5. vue axios封装

    前言: 对第三方库进行二次封装和抽离到统一模块,项目面对自己的模块进行开发.如果有一天更换库,只需要修改自己模块中的代码,无需对整个项目进行重构. 将axios网络请求库封装到network文件下的r ...

  6. Vue axios封装 实现请求响应拦截

    封装 axios.js import axios from 'axios' import { baseURL } from '@/config' class HttpRequest { constru ...

  7. vue axios 封装(三)

    封装三: import axios from 'axios' import { Message, MessageBox } from 'element-ui' import store from '. ...

  8. vue axios封装以及API统一管理

    在vue项目中,每次和后台交互的时候,经常用到的就是axios请求数据,它是基于promise的http库,可运行在浏览器端和node.js中.当项目越来越大的时候,接口的请求也会越来越多,怎么去管理 ...

  9. 把axios封装为vue插件使用

    前言 自从Vue2.0推荐大家使用 axios 开始,axios 被越来越多的人所了解.使用axios发起一个请求对大家来说是比较简单的事情,但是axios没有进行封装复用,项目越来越大,引起的代码冗 ...

随机推荐

  1. KindEditor 开源得富文本编辑器

    正常HTML情况写输入长文本需要textarea 标签 .但textarea 标签局限性很大,切只能输入单一的文本,我们大多情况下看到的新闻类文本信息大多是图文混排得,且有的配有视频和音乐. 我们可以 ...

  2. Python脱产8期 Day09 2019/4/23

    内存管理 一.引用计数:垃圾回收机制的依据 1.变量的值被引用,该值的引用计数 +12.变量的值被解绑,该值的引用计数 -13.引用计数为0时就会被垃圾回收机制回收 二.引用计数会出现循环引用问题:相 ...

  3. ReactJs入门教程-精华版

    原文地址:https://www.cnblogs.com/Leo_wl/p/4489197.html阅读目录 ReactJs入门教程-精华版 回到目录 ReactJs入门教程-精华版 现在最热门的前端 ...

  4. [Spark][Python][DataFrame][RDD]从DataFrame得到RDD的例子

    [Spark][Python][DataFrame][RDD]从DataFrame得到RDD的例子 $ hdfs dfs -cat people.json {"name":&quo ...

  5. C# 相关面试试题简单的总结

    最近一个搞NET开发的朋友离职了,想让我给他找点关于NET的相关面试题,准备抱一下佛脚,迎接新的挑战. 我赶紧找到以前检索的各种宝典,试题,今天梳理一下关于NET的基础知识点. 1.面向对象语言的三大 ...

  6. 面试 16:栈的压入压出队列(剑指 Offer 第 22 题)

    我们今天继续来看看周五留下的习题: 面试题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如:压入序列为{1,2,3,4,5},那{ ...

  7. 你不知道的腾讯社招面试经验(已offer)

    # 你不知道的腾讯社招面试经验(已offer) ## 背景 最近一段时间换工作,成功获得了腾讯的offer.在这里有点经验跟大家分享,我觉得,比起具体的面试题,有些东西更加重要,你知道这些东西,再去准 ...

  8. 腾讯 Omi 5.0 发布 - Web 前端 MVVM 王者归来,mappingjs 强力加持

    写在前面 腾讯 Omi 框架正式发布 5.0,依然专注于 View,但是对 MVVM 架构更加友好的集成,彻底分离视图与业务逻辑的架构. 你可以通过 omi-cli 快速体验 MVVM: $ npm ...

  9. 三、xadmin----内置插件

    1.Action Xadmin 默认启用了批量删除的事件,代码见xadmin-->plugins-->action.py  DeleteSelectedAction 如果要为list列表添 ...

  10. logstash grok内置规则

    logstash grok 内置正则 https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns USERNAME [ ...