vue中axios封装使用的完整教程


Posted in Vue.js onMarch 03, 2021

前言

如今,在项目中,普遍采用Axios库进行Http接口请求。它是基于promise的http库,可运行在浏览器端和node.js中。此外还有拦截请求和响应、转换JSON数据、客户端防御XSRF等优秀的特性。

考虑到各个项目实际使用时写法混乱,不统一。对Axios进行一下通用化的封装,目的是帮助简化代码和利于后期的更新维护,尽量通用化。

方法如下

1. vue安装axios

npm install axios -S
	或者
	npm i axios -S

2. 在main.js进行全局引入

import axios from 'axios'
	Vue.prototype.$axios = axios //将axios绑定到vue的原型上

3. 配置跨域 在根目录下vue.config.js里边

module.exports = {
	 publicPath: './',
	 //配置跨域请求
	 devServer: {
	  open: true, //是否自动打开浏览器
	  https: false, //是否开启https
	  hotOnly: false,
	  proxy: { // 配置跨域
	   '/api': {
	    target: 'http://********', //请求接口域名 
	    ws: true,
	    secure: false,
	    changOrigin: true, //是否允许跨越
	    pathRewrite: {
	     '^/api': ''
	    }
	   }
	  },
	  before: app => { }
	 }
	}

4. 在src子目录下的api文件夹下创建api.js文件进行简单的封装axios

import axios from 'axios'
//这里引用了element的loading全屏加载
import { Loading } from "element-ui";

const service = axios.create({
 baseURL: '/',
 timeout: 30000 // 设置请求超时时间
})
let loading = "";
// 请求拦截器
service.interceptors.request.use(
 (config) => {
  // 在请求发送之前做一些处理
  if (!(config.headers['Content-Type'])) {
   loading = Loading.service({
    lock: true,
    text: "加载中...",
    spinner: "el-icon-loading",
    background: "rgba(255,255,255,0.7)",
    customClass: "request-loading",
   });
   if (config.method == 'post') {
    config.headers['Content-Type'] =
     'application/json;charset=UTF-8'
    for (var key in config.data) {
     if (config.data[key] === '') {
      delete config.data[key]
     }
    }
    config.data = JSON.stringify(config.data)
   } else {
    config.headers['Content-Type'] =
     'application/x-www-form-urlencoded;charset=UTF-8'
    config.data = JSON.stringify(config.data)
   }
  }
  const token = "token"
  // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
  if (token) {
   config.headers['Authorization'] = token
  }
  return config
 },
 (error) => {
  loading.close();
  // 发送失败
  console.log(error)
  return Promise.reject(error)
 }
)

// 响应拦截器
service.interceptors.response.use(
 (response) => {

  loading.close();
  // dataAxios 是 axios 返回数据中的 data
  // loadingInstance.close();
  const dataAxios = response.data
  // 这个状态码是和后端约定的

  return dataAxios
 },
 (error) => {
  return Promise.reject(error)
 }
)

	export default service

5. 在api文件夹下创建http文件

// 引入封装好的axios
 // ps:如果没有封装,正常引入axios即可
  import axios from "./api";
	// 	/api为配置跨域的路径变量
  let reportUpload= '/api/report/upload'
  export const Upload= () => {
   return axios.get( reportUpload )
  }

6. 在页面中调用接口

// 引入封装好的接口
 	import { Upload} from "@/api/http.js"; 

// 调用时使用
 async Upload() {
  let { result } = await getlist ();
  	console.log(result)
 },

总结

到此这篇关于vue中axios封装使用的文章就介绍到这了,更多相关vue axios封装使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
VUE项目实现主题切换的多种方法
Nov 26 Vue.js
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
vue开发chrome插件,实现获取界面数据和保存到数据库功能
Dec 01 Vue.js
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
vue实现购物车的小练习
Dec 21 Vue.js
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
vue实现简易音乐播放器
Aug 14 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 #Vue.js
详解vue3中组件的非兼容变更
Mar 03 #Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 #Vue.js
Vue多选列表组件深入详解
Mar 02 #Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 #Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 #Vue.js
vue脚手架项目创建步骤详解
Mar 02 #Vue.js
You might like
德生PL990的分析评价
2021/03/02 无线电
PHP+DBM的同学录程序(4)
2006/10/09 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
Javascript var变量隐式声明方法
2009/10/19 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
Python中表示字符串的三种方法
2017/09/06 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
python 日志 logging模块详细解析
2020/03/31 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
会计专业应届生求职信
2013/11/24 职场文书
员工考核管理制度
2014/02/02 职场文书
挂职自我鉴定
2014/02/26 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
社区宣传标语口号
2015/12/26 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python