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 ...
随机推荐
- 【LightOJ1282】Leading and Trailing(数论)
[LightOJ1282]Leading and Trailing(数论) 题面 Vjudge 给定两个数n,k 求n^k的前三位和最后三位 题解 这题..真的就是搞笑的 第二问,直接输出快速幂\(m ...
- [BZOJ1036] [ZJOI2008] 树的统计Count (LCT)
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...
- c#事件的应用
我已经多次使用c#事件了.举个最近的例子:我用vsto做的一个word插件.这个插件分为两层,业务逻辑层和word外接程序.有这么一个场景,我的ribbon中的一个label是动态显示的.它会随着wo ...
- android使用JSON数据和服务器进行交互
//点击按钮发送反馈信息给服务端,成功则进入优惠券界面 Button upload = (Button) findViewById(R.id.upload); final String finalLa ...
- 你真的了解interface和内部类么
java 访问控制符 private : 只能被当前类访问 protected : 可以被同包的类和任何子类访问(包内,包外) default : 可以被包内的任何内访问 public ...
- Python账号密码登陆判断(三次机会)
#!/usr/bin/env python #coding=UTF-8 #先设定初始用户名和登录密码 init_usrname=input("Please enter initial use ...
- CMake 条件判断
CMake简介 CMake 是做什么的? CMake是一套类似于automake的跨平台辅助项目编译的工具. 我觉得语法更加简单易用. CMake的工作流程 CMake处理顶级目录的CMakeList ...
- unable to apply changes:plugins "App links assistant",firebase services won'
新安装的android studio工具报错,本来以为只要在plugins中安装android support插件的,现在点击该插件还是不能apply,提示: unable to apply chan ...
- nginx location匹配顺序及CI框架的nginx配置
Nginx location匹配顺序如下: 用前缀字符串定义的location规则对URI进行匹配测试. =号定义了精确的前缀字符串匹配,如果发现精确匹配则使用当前规则.否则继续下一步匹配. 匹配其它 ...
- Open source operational tools
操作系统:Centos,Ubuntu,Redhat,suse,Freebsd 网站服务:nginx,apache,lighttpd,php,tomcat,resin 数据 库:MySQL,Mari ...