import Vue from 'vue'import axios from 'axios'
import { Toast,Indicator,MessageBox } from 'mint-ui';//使用于vue项目中Toaset进行错误提示
//取消请求let CancelToken = axios.CancelToken//设置默认请求头,如果不需要可以取消这一步// axios.defaults.headers = {//     'X-Requested-With': 'XMLHttpRequest'// }// 请求超时的时间限制axios.defaults.timeout = 20000// 开始设置请求 发起的拦截处理// config 代表发起请求的参数的实体axios.interceptors.request.use(config => {// 得到参数中的 requestName 字段,用于决定下次发起请求,取消对应的 相同字段的请求// 如果没有 requestName 就默认添加一个 不同的时间戳let requestNameif(config.method === 'post'){if(config.data && config.data.requestName){requestName = config.data.requestName}else{requestName = new Date().getTime()}}else{if(config.params && config.params.requestName){requestName = config.params.requestName}else{requestName = new Date().getTime()}}// 判断,如果这里拿到的参数中的 requestName 在上一次请求中已经存在,就取消上一次的请求if (requestName) {if (axios[requestName] && axios[requestName].cancel) {axios[requestName].cancel()}config.cancelToken = new CancelToken(c => {axios[requestName] = {}axios[requestName].cancel = c})}return config}, error => {return Promise.reject(error)})// 请求到结果的拦截处理axios.interceptors.response.use(config => {// 返回请求正确的结果return config}, error => {// 错误的请求结果处理,这里的代码根据后台的状态码来决定错误的输出信息if (error && error.response) {switch (error.response.status) {case 400:error.message = '错误请求' ; Toast('错误请求');breakcase 401:error.message = '未授权,请重新登录' ; Toast('未授权,请重新登录');breakcase 403:error.message = '拒绝访问' ; Toast('拒绝访问');breakcase 404:error.message = '请求错误,未找到该资源' ; Toast('请求错误,未找到该资源');breakcase 405:error.message = '请求方法未允许' ; Toast('请求方法未允许');breakcase 408:error.message = '请求超时' ; Toast('请求超时');breakcase 500:error.message = '服务器端出错' ; Toast('服务器端出错');breakcase 501:error.message = '网络未实现' ; Toast('网络未实现');breakcase 502:error.message = '网络错误' ; Toast('网络错误');breakcase 503:error.message = '服务不可用' ; Toast('服务不可用');breakcase 504:error.message = '网络超时' ; Toast('网络超时');breakcase 505:error.message = 'http版本不支持该请求' ; Toast('http版本不支持该请求');breakdefault:error.message = `连接错误${error.response.status}`   ; Toast(`'连接错误'${error.response.status}`);}} else {error.message = "连接到服务器失败";  Toast('连接到服务器失败');}return Promise.reject(error.message)})// 将axios 的 post 方法,绑定到 vue 实例上面的 $postVue.prototype.$post = function (url, params) {return new Promise((resolve, reject) => {axios.post(url, params).then(res => {resolve(res)}).catch(err => {reject(err)})})}// 将axios 的 get 方法,绑定到 vue 实例上面的 $get
Vue.prototype.$get = function (url, params) {return new Promise((resolve, reject) => {axios.get(url, {params: params}).then(res => {resolve(res) // 返回请求成功的数据 data}).catch(err => {reject(err)})})}// 请求示例// requestName 为多余的参数 作为请求的标识,下次发起相同的请求,就会自动取消上一次还没有结束的请求// 比如正常的请求参数只有一个 name: '123',但是这里我们需要额外再加上一个 requestName/**//post请求实例this.$post(this.url2, {name: "王",docType: "pson",requestName: 'name02'}).then(res => {console.log(res)})//get请求实例this.$get(this.url, {name: "李",requestName: 'name01'}).then(res => {console.log(res)})*/export default axios
复制代码
将此文件引入main.js中再须配置

axios.defaults.baseURL = 'http://baidu.com' //须手动配置全局axios的访问地址

vue项目中简单进行axios封装及响应状态码提示!相关推荐

  1. Ajax库-认识服务器,URL地址,axios基本用法,响应状态码,业务状态码,接口测试工具

    AjaxDay01 学习目标 1.理解客户端与服务器通信的过程 2.掌握 axios 的使用 3.了解接口文档的概念 服务器相关基础概念 概念:服务器是提供服务的设备(本质上就是一台电脑主机). 作用 ...

  2. Vue项目中安装使用axios

    一.安装 在控制台输入npm install axios -S 二.引入 在文件main.js中写入 import axios from 'axios'; Vue.prototype.$axios = ...

  3. vue项目中使用ckplayer.js封装视频播放组件

    1.在index.html中引入ckplayer.js <script src="ckplayer/ckplayer.js" charset="utf-8" ...

  4. Vue项目中是使用qrcodejs2插件生成二维码

    1.安装qrcodejs2插件,在控制台输入: npm install qrcodejs2 --save 2.在需要使用的页面中引入: <div id="qrcode" re ...

  5. 在vue项目中:统一封装 Axios 接口与异常处理

    在vue项目中:统一封装 Axios 接口与异常处理 参考文章: (1)在vue项目中:统一封装 Axios 接口与异常处理 (2)https://www.cnblogs.com/itgezhu/p/ ...

  6. 在vue项目中对axios进行封装

    在vue项目中对axios进行封装 1.引入axios,qs模块 import axios from 'axios'; import Qs from "qs"; import st ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources ...

  8. 【EasyExcel】在SpringBoot+VUE项目中引入EasyExcel实现对数据的导出(封装工具类)

    在SpringBoot+VUE项目中引入EasyExcel实现导入导出 一.引入EasyExcel 通过maven引入,坐标如下: <dependency><groupId>c ...

  9. Vue学习笔记(二)—— vue项目中使用axios

    一.文档链接 axios文档 vue开发插件 二.axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 从浏览器中创建 XML ...

最新文章

  1. php 实现一致性hash 算法 memcache
  2. ActionRequestValidationException[Validation Failed: 1: script or doc is missing
  3. iOS开发——你真的会用SDWebImage?
  4. 【VB.NET】自定义控件(一)属性说明
  5. Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp
  6. INSTALLSHIELD11.5中打包水晶报表的问题,ScriptProject与ScriiptMSIProject差异引起的错误!...
  7. 如何在windows平台下使用hsdis与jitwatch查看JIT后的汇编码
  8. 机器学习资料合计(一)
  9. 基于差分分级和关联规则挖掘的气象数据关联性分析实战
  10. 2018ICPC焦作D(几何)---Keiichi Tsuchiya the Drift King
  11. clover写入efi_Clover 新手入门 详解Clover EFI Tools
  12. 英雄传奇-6.专用浏览器打不开.黑屏.白屏.插件丢失等怎么解决
  13. PHP 100 个最常用的函数
  14. CCA(典型相关分析)
  15. java基础学习备忘录
  16. linux降调软件下载,o的发音有几种
  17. See Conf 悠鹤《蚂蚁庄园背后的技术与思考》笔记
  18. 使用selenium自动化操作浏览器
  19. 一个3D车道线检测方法PersFormer及其开源OpenLane数据集
  20. 这么有“艾”的端午节,此处应@博物杂志!

热门文章

  1. JavaScript学习笔记(三)--操作运算符
  2. OpenCV3学习(12.4) 粒子滤波Condensation算法
  3. 7-56 家庭房产 (25 分)
  4. 2019递归实现字符串的逆序存储(C++)
  5. JAVA 一个或多个空格分割字符串
  6. 配置鸿蒙Windows烧录环境 用Hiburn烧录第一个程序
  7. Spring事务处理之 编程式事务 和 声明式事务
  8. php5.2 array,详解php 5.2.x 数组操作实例
  9. font-weight属性
  10. Swift - UITableView里的cell底部分割线左侧靠边