前言

作为出入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封装的更多相关文章

  1. vue2.0 axios封装、vuex介绍

    一.前言 博主也是vue道路上的行者,道行不深,希望自己的东西能对大家有所帮助.这篇博客针对 了解过vue基础,但是没有做过vue项目的童鞋.如果想看基础指令,可以看我之前的一篇博客,请点击  跳转, ...

  2. 把axios封装为vue插件使用

    前言 自从Vue2.0推荐大家使用 axios 开始,axios 被越来越多的人所了解.使用axios发起一个请求对大家来说是比较简单的事情,但是axios没有进行封装复用,项目越来越大,引起的代码冗 ...

  3. vue项目搭建 (二) axios 封装篇

    vue项目搭建 (二) axios 封装篇 项目布局 vue-cli构建初始项目后,在src中进行增删修改 // 此处是模仿github上 bailicangdu 的 ├── src | ├── ap ...

  4. 原生js上传图片遇到的坑(axios封装)

    后台给我写了一个上传图片的接口,自己用form表单测试成功 接口可以正常跳转 测试的代码: <!doctype html> <html lang="en"> ...

  5. vue-cli3中axios如何跨域请求以及axios封装

    1. vue.config.js中配置如下 module.exports = { // 选项... // devtool: 'eval-source-map',//开发调试 devServer: { ...

  6. axios interceptors 拦截 , 页面跳转, token 验证 Vue+axios实现登陆拦截,axios封装(报错,鉴权,跳转,拦截,提示)

    Vue+axios实现登陆拦截,axios封装(报错,鉴权,跳转,拦截,提示) :https://blog.csdn.net/H1069495874/article/details/80057107 ...

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

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

  8. vue3.0+vite+ts项目搭建-axios封装(六)

    封装方式一 import axios from 'axios' import qs from 'qs' import { Toast } from 'vant' import Lockr from ' ...

  9. axios 封装

    来自:https://www.jianshu.com/p/68d81da4e1ad 侵删 import axios from 'axios' import qs from 'qs' let baseu ...

随机推荐

  1. 【BZOJ2816】【ZJOI2012】网络(Link-Cut Tree)

    [BZOJ2816][ZJOI2012]网络(Link-Cut Tree) 题面 题目描述 有一个无向图G,每个点有个权值,每条边有一个颜色.这个无向图满足以下两个条件: 对于任意节点连出去的边中,相 ...

  2. [Luogu3768]简单的数学题

    题面戳我 题意:求 \[\sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j)\] \(n\le10^{10}\) sol \[ans=\sum_{d=1}^{n}d\sum_ ...

  3. htop命令使用详解

    一.htop 简介 htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses.与Linux传统的top相比,htop更加人性化.它可让用户 ...

  4. WordPress缓存插件WP Super Cache的使用及常见问题解决

    WP Super Cache是一款很好的WordPress优化插件,是我用过最好的一款缓存插件.打开WordPress后台搜索插件页面,第一个就是这个插件,可想而知他的地位有多厉害了. 什么是WP S ...

  5. 基于synchronized实现的阻塞队列

    package com.lilei.pack09; import java.util.concurrent.ExecutorService; import java.util.concurrent.E ...

  6. Hadoop搭建全程

    修改配置文件 cd /etc/sysconfig/network-scripts  #进入网络配置目录 dir ifcfg*                         #找到网卡配置文件 ifc ...

  7. 部署openstack的官网文档解读mysql的配置文件

    部署openstack的官网文档解读mysql的配置文件(使用与ubutu和centos7等系统) author:headsen chen  2017-10-12 16:57:11 个人原创,严禁转载 ...

  8. 多进程浏览器、多线程页面渲染与js的单线程

    线程与进程 说到单线程,就得从操作系统进程开始说起.在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位.任务调度采用的是时间片轮转的抢占式调度方式,而进程 ...

  9. Android GC Log

    最近在研究Android内存垃圾回收的内容,遇到一些自己之前不知道的技巧和方法.现在分享一种简单的在Logcat中可以看到垃圾回收状态的方法.经常关注Logcat日志的童鞋偶尔会看到一条类似于以下形式 ...

  10. 初识mango DB

    换工作了,第一次接触到mango数据库,有点云里雾里,整理一篇最基本的增删该查语句 百度百科说mango DB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据 ...