1. import axios from 'axios'
  2. import { Message} from 'element-ui'
  3. import store from '../store' //vuex
  4. import { getToken } from '@/utils/auth' //token
  5.  
  6. // 创建axios实例
  7.  
  8. const service = axios.create({
  9. //baseURL: "https://www.cnblogs.com", // api的base_url
  10. timeout: 5000 // 请求超时时间
  11. })
  12.  
  13. //http request 拦截器
  14. service.interceptors.request.use(
  15. config => {
  16. config.headers = {
  17. 'Content-Type':'application/x-www-form-urlencoded',
  18. 'X-Token':getToken()
  19. }
  20. return config;
  21. },
  22. error => {
  23. return Promise.reject(err);
  24. }
  25. );
  26.  
  27. //响应拦截器即异常处理
  28. service.interceptors.response.use(response => {
  29. console.log(response)
  30. return response
  31. }, err => {
  32. if (err && err.response) {
  33.  
  34. switch (err.response.status) {
  35. case 400:
  36. //console.log('错误请求')
  37. Message({message: '错误请求', type: 'error'});
  38. break;
  39. case 401:
  40. console.log('未授权,请重新登录')
  41. break;
  42. case 403:
  43. console.log('拒绝访问')
  44. break;
  45. case 404:
  46. console.log('请求错误,未找到该资源')
  47. break;
  48. case 405:
  49. console.log('请求方法未允许')
  50. break;
  51. case 408:
  52. console.log('请求超时')
  53. break;
  54. case 500:
  55. console.log('服务器端出错')
  56. break;
  57. case 501:
  58. console.log('网络未实现')
  59. break;
  60. case 502:
  61. console.log('网络错误')
  62. break;
  63. case 503:
  64. console.log('服务不可用')
  65. break;
  66. case 504:
  67. console.log('网络超时')
  68. break;
  69. case 505:
  70. console.log('http版本不支持该请求')
  71. break;
  72. default:
  73. console.log(`连接错误${err.response.status}`)
  74. }
  75. } else {
  76. console.log('连接到服务器失败')
  77. }
  78. return Promise.resolve(err.response)
  79. })
  80.  
  81. function fromdata(type, url, data) {
  82. return new Promise((reslove, reject) => {
  83. service({
  84. method: type,
  85. url: url,
  86. data: data //java后台用qs转
  87. })
  88. .then(res => {
  89. // store.commit('UPDATE_LOADING', false); //隐藏loading
  90. //这里可以添加指定对应状态码的处理方式,比如登陆过期,res.data.code === '6666' 路由跳转到login
  91. if(res.data.code==0){
  92. reslove(res);
  93. }else{
  94. console.log(res.data.message)
  95. console.log(res)
  96. Message({message: '错误请求', type: 'error'});
  97. }
  98. })
  99. .catch(err => {
  100. //store.commit('UPDATE_LOADING', false); //隐藏loading
  101. reject(err.message);
  102. Message({message: '错误请求', type: 'error'});
  103. //Message.error(e.message);
  104. });
  105. });
  106. }
  107.  
  108. export default fromdata

上文件保存为http.js使用时引入

例子

import fromdata from '@/utils/http'
 
fromdata('post','url',Data)
 

axios简单的二次封装的更多相关文章

  1. Vue:对axios进行简单的二次封装

    主要做3点: 1.配置一个请求地址前缀 2.请求拦截(在请求发出去之前拦截),给所有的请求都带上 token 3.拦截响应,遇到 token 不合法则报错 // 对 axios 的二次封装 impor ...

  2. vue项目中对axios的二次封装

    近来在使用vue重构公司m站时,使用了axios来进行数据的请求,由于项目的需要,对axios进行了二次封装,点击进入axios //引入axios import axios from 'axios' ...

  3. axios 二次封装

    一般项目往往要对 axios 库进行二次封装,添加一些自定义配置和拦截器等 案例 ./service/axios.js 1234567891011121314151617181920212223242 ...

  4. 原生 Ajax 封装 和 Axios 二次 封装

    AJAX 异步的JavaScript与XML技术( Asynchronous JavaScript and XML ) Ajax 不需要任何浏览器插件,能在不更新整个页面的前提下维护数据,但需要用户允 ...

  5. 简单二次封装的Golang图像处理库:图片裁剪

    简单二次封装的Golang图像处理库:图片裁剪 一.功能 Go语言下的官方图像处理库 简单封装后对jpg和png图像进行缩放/裁剪的库 二.使用说明 1.首先下载 go get -v -u githu ...

  6. vue中axios的二次封装

    我们做项目时,虽然axios也可以直接拿来用,但是对接口比较零散,不太好进行维护,也会产生大量的重复代码,所以我在这对axios进行了统一接口处理 第一步,先在src中的公共文件夹中如utils里新建 ...

  7. 【vue】axios二次封装,更好的管理api接口和使用

    在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...

  8. 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm

    前言:之前在网上找的好多都是基于vue-cli 2.x的,而使用vue-cli 3的文章比较少,Vue CLI 3 中文文档,所以我在自己尝试的时候把几篇文章结合了一下,调出来了我想要的模式,也就是V ...

  9. 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)

    前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...

随机推荐

  1. 洛谷P5104 红包发红包

    题目链接: P5104 题目分析: 题目和\(n\)是没什么关系的,因为是\(n\)个人抢,其实不一定抢完 其实很显然--就是求一个连续型随机变量的期望 首先设一个随机变量\(X\),表示第一个人拿到 ...

  2. 【breathandlife】气势磅礴、比较好听的旋律有哪些?

    [breathandlife]气势磅礴.比较好听的旋律有哪些? 分享:yunbest作者:来源:2015-10-26 专题:breathandlife [breathandlife]气势磅礴.比较好听 ...

  3. Linux 启动出现 busybox vx.x.xx built-in shell 的问题

    可能是磁盘检测错误,尤其出现在未安全关机或者磁盘损坏之后. 解决办法: 1.在选择启动项目时,选中第一项,如: ubuntu 8.04kernl.2.6.22-16-generic 2.按E 进入编辑 ...

  4. day 38 MySQL之单表查询

    MySQL之单表查询   阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...

  5. shell对文件,文件夹的操作

    x=$ OUTFILENAME="output_${x}.sql" if [ -f $OUTFILENAME ];then rm $OUTFILENAME fi 如果文件存在则删除 ...

  6. 虚拟机vm安装黑群晖6.2

    操作系统选择

  7. JS和JQuery概括

    1. BOM 1. location相关 1. location.href 2. location.href="http://www.sogo.com" 3. location.r ...

  8. 23-css补充

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. nfs 原理详解

    一.NFS介绍 1)什么是NFS 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录.NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中.在本地的N ...

  10. 第一个SpringBoot插件-捕获请求并且支持重新发起

    SpringBoot 插件入门 简介 公司用的是SpringBoot,api框架用的是swagger-ui,确实用的不错,但是在使用过程中发现一个问题,就是当前端正式调用的时候,如果参数一多的话模拟请 ...