axios封装
前言
作为出入vue的小萌新,我在写请求的时候,也是毫不犹豫写了ajax,结果肯定是不行的...
Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource。
目前主流的 Vue 项目,都选择 axios 来完成 ajax 请求。
关于axios的使用介绍,请看 axios中文说明
axios封装(该文件名为axios.js)
/**
* 引入axios,创建axios实例
* 封装axios请求拦截器
*/
import axios from 'axios'
import router from '@/router'
import store from '@/store'
import Lockr from 'lockr/lockr.js'
import { Message, MessageBox, Loading } from 'element-ui'
import qs from 'qs'
// 配置请求头
var instance = axios.create({
baseURL: 'http://127.0.0.1:9800',
timeout: 5000,
});
// 这里我声明了一个全局变量loading,来统一控制请求时的等待数据的loading效果。也可以在实际请求的时候写loading,不过我觉得那样太过繁琐,多了许多代码
let loading;
// request 拦截器 在请求或响应被 then 或 catch 处理前拦截它们
instance.interceptors.request.use(config => {
// 请求时loading效果
loading = Loading.service({
fullscreen: true,
lock: true,
text: '正在加载,请稍等……',
spinner: 'el-icon-loading'
});
// 让每个请求携带token token的key根据实际情况自定义
if (store.getters.token) {
config.data = Object.assign({ token: store.getters.token }, config.data)
}
// 请求参数序列化
config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
if (config.method === 'post' || config.method === "put" || config.method === "delete") {
config.data = qs.stringify(config.data)
}
return config
}, error => {
loading.close();
// 对错误请求的处理
// 弹出错误消息
Message({
showClose: true,
message: error.message,
type: 'error'
})
return Promise.reject(error);
})
// response拦截器 对请求结果做一些处理
instance.interceptors.response.use(response => {
loading.close();
// 这里根据从后端拿到的数据做一些处理,比如不同的code对应不同的处理方式等
}, error => {
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
})
/**
* 封装并导出get方法、post方法。
*/
export default {
get(url, params) {
return instance.get(url, params)
},
post(url, params) {
return instance.post(url, params)
}
}
如果需要对get请求或post请求返回的数据做一些特殊处理,需要写在then()或catch()里面。
调用说明
import fetch from '@/utils/axios'
export function example(data){
return fetch.post(axiosUrl,data)
}
总结
以上只是一个简陋的封装,只能说明一个大概的封装思路。写错的地方还望大家多多指点~~~~
axios封装的更多相关文章
- vue2.0 axios封装、vuex介绍
一.前言 博主也是vue道路上的行者,道行不深,希望自己的东西能对大家有所帮助.这篇博客针对 了解过vue基础,但是没有做过vue项目的童鞋.如果想看基础指令,可以看我之前的一篇博客,请点击 跳转, ...
- 把axios封装为vue插件使用
前言 自从Vue2.0推荐大家使用 axios 开始,axios 被越来越多的人所了解.使用axios发起一个请求对大家来说是比较简单的事情,但是axios没有进行封装复用,项目越来越大,引起的代码冗 ...
- vue项目搭建 (二) axios 封装篇
vue项目搭建 (二) axios 封装篇 项目布局 vue-cli构建初始项目后,在src中进行增删修改 // 此处是模仿github上 bailicangdu 的 ├── src | ├── ap ...
- 原生js上传图片遇到的坑(axios封装)
后台给我写了一个上传图片的接口,自己用form表单测试成功 接口可以正常跳转 测试的代码: <!doctype html> <html lang="en"> ...
- vue-cli3中axios如何跨域请求以及axios封装
1. vue.config.js中配置如下 module.exports = { // 选项... // devtool: 'eval-source-map',//开发调试 devServer: { ...
- axios interceptors 拦截 , 页面跳转, token 验证 Vue+axios实现登陆拦截,axios封装(报错,鉴权,跳转,拦截,提示)
Vue+axios实现登陆拦截,axios封装(报错,鉴权,跳转,拦截,提示) :https://blog.csdn.net/H1069495874/article/details/80057107 ...
- 【Vue】axios封装,更好的管理api接口和使用
在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...
- vue3.0+vite+ts项目搭建-axios封装(六)
封装方式一 import axios from 'axios' import qs from 'qs' import { Toast } from 'vant' import Lockr from ' ...
- axios 封装
来自:https://www.jianshu.com/p/68d81da4e1ad 侵删 import axios from 'axios' import qs from 'qs' let baseu ...
随机推荐
- 【BZOJ2002】弹飞绵羊(Link-Cut Tree)
[BZOJ2002]弹飞绵羊(Link-Cut Tree) 题面 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lost ...
- 【BZOJ1216】操作系统(堆,模拟)
[BZOJ1216]操作系统(堆,模拟) 题面 题目描述 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示 ...
- [COGS2701]:动态树
题面 传送门 Sol LCT维护子树和 # include <bits/stdc++.h> # define IL inline # define RG register # define ...
- MyBatis相关配置
在MyBatis中,不免会有一些配置要设置,我们先来看一下MyBatis配置XML文件的层次结构,这些层次是不能够颠倒顺序的,下面是层次结构: <?xml version = "1.0 ...
- Servlet 过滤器、拦截器、监听器以及文件上传下载
在学习之初,总是对过滤器.拦截器.监听器这三个搞不清楚,现在进行一些记录,方便大家交流,也为了提高自身的学习能力! 如果想要了解这三个的作用,首先对servlet流程进行熟悉了解,servlet是客户 ...
- mysql主从复制的基本原理
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql 1.3.修改root的密码 2.修 ...
- CentOS 7主机名的弯弯绕绕
在CentOS 6中,修改主机名方式很简单,临时修改主机名使用hostname命令,永久修改主机名直接写进文件/etc/sysconfig/network中即可. 但在CentOS 7中,主机名就没那 ...
- Spring MVC注解式开发
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...
- Redis搭建多台哨兵
搭建多台哨兵 完成spring管理多台哨兵 学习redis如何数据持久化如何管理内存 Redis集群搭建 集群测试 Spring管理集群 2 搭建多台哨兵 2.1 搭建步骤 2.1.1 修改6379哨 ...
- NEO从入门到开窗(1) - 一个智能合约的诞生
一.啰嗦两句 最近一直都在研究区块链,BitCoin,Etherenum, Hyper Ledger Fabric还有今天的主角小蚂蚁,当然出名以后改了一个艺名叫NEO.区块链大部分都是用Golang ...